我需要帮助为此代码创建JUnit 4测试用例.
public static int computeValue(int x, int y, int z)
{
int value = 0;
if (x == y)
value = x + 1;
else if ((x > y) && (z == 0))
value = y + 2;
else
value = z;
return value;
}
Run Code Online (Sandbox Code Playgroud)
编辑
我想要这样的东西测试if else语句
public class TestingTest {
@Test
public void testComputeValueTCXX() {
}
…
@Test
public void testComputeValueTCXX() {
}
}
Run Code Online (Sandbox Code Playgroud)
让你入门的东西......
首先是"扩展"版本,可能对"新手"更有帮助:
@Test
public void testXandYEqual() {
// arrange
int x=0;
int y=0;
int anyValueBeingIgnored=0;
// act
int result = ThatClass.computeValue(x, y, anyValueBeingIgnored);
// assert
assertThat(result, is(1));
}
Run Code Online (Sandbox Code Playgroud)
以上测试了那些级联的ifs的第一个案例; 其中assertThat是众多JUnit断言之一; and is()是一种hamcrest匹配器方法.此外,这就是我写这个测试用例的方法:
@Test
public void testXandYEqual() {
assertThat(ThatClass.computeValue(0, 0, 1), is(1));
}
Run Code Online (Sandbox Code Playgroud)
(主要区别在于:对我来说,单元测试不应包含任何我不需要的信息;在这个意义上:我希望它尽可能纯粹,简洁,简洁)
基本上,您希望编写不同的测试,以涵盖通过逻辑的所有路径.您可以使用众多现有覆盖工具之一来确保覆盖所有路径.
或者,您也可以查看参数化测试.含义:您可以将所有不同的"调用参数"放入表中,而不是创建大量的测试方法,而每个测试方法都只使用不同的参数调用实际方法.然后JUnit从该表中获取所有数据,并在调用测试中的"目标"方法时使用它.
| 归档时间: |
|
| 查看次数: |
301 次 |
| 最近记录: |