【问题标题】:Need to make junit tests for a java code which check if a number is power of other number需要对 java 代码进行junit测试,检查一个数字是否是其他数字的幂
【发布时间】:2014-01-18 00:38:49
【问题描述】:

我是 JUnit 测试的初学者,我有一些关于测试的问题。我的 Java 代码是关于:检查一个数字(整数)是否是其他数字(整数)的幂,并返回布尔值 True/False。只有一种名为 isPower(int x,int y) 的方法计算 if (x % y) == 0 ,这是我的代码的简短介绍。

我想知道如果只返回真或假,我应该对这段 Java 代码进行什么样的测试,我应该创建 setup() 和 teardown() 函数?

【问题讨论】:

  • (x % y) == 0 只会测试x 是否是y 的倍数,而不是y 的幂。
  • 如果您真的想确定x 是否是y 的幂(这不是x%y 所做的),请确保测试y==1 的用例,两者都在x==1x!=1.

标签: java testing junit tdd junit4


【解决方案1】:

不需要setup()teardown(),因为不需要设置任何东西。通常在设置数据库、服务等环境时使用这些。在您的情况下,您可能会有一个类和一个(静态)方法。

通常的做法是测试边缘情况,即负数、0、最大数,并让您的测试通过测试代码清楚地记录您期望发生的情况。假设您的测试不应该在任何输入上引发异常,因为您是除法而不是乘法。分别尝试Integer.MIN_VALUEInteger.MAX_VALUE

一些单元测试框架可以生成随机数据作为测试的输入,因此它们可以测试所有边缘情况。

一个小例子:

@Test
public void test_nominator_nonzero_denominator_zero() {
   MyClass mathObject = new MyClass();
   assertFalse("0 can't be a divisor of a non-zero number", mathObject.isPower(5, 0));
}

您的问题听起来像是对找到 X 的除数或因子的函数的描述。

【讨论】:

  • 所以我可以这样做:public void test1(){ assertEquals(true, Power.isPower(8, 2)); }
  • 当然可以,只需针对您能想到的所有类型的场景分别添加每个测试。
猜你喜欢
  • 2017-01-09
  • 2010-09-11
  • 2010-10-10
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多