我用我的代码测试cobertura并生成一个简单的报告。理解那里所示的数字有点问题。Cobertura如何识别代码中的分支?
只有一种类和内容被示出为在图像中。 我写测试是如下,
public class AppTest {
@Before
public void before() {
}
@Test
public void addShouldReturnTheSumOfTwoIntegersWhenFirstIsLessThan100() {
Assert.assertTrue(65 == App.add(20, 45));
}
@Test
public void addShouldReturnMinusOneWhenFirstIsGreaterThan200() {
Assert.assertTrue(-1 == App.add(250, 45));
}
}
作为图像中示出有4
分支。有人可以解释一下这个数字是多少4
?
UPDATE:
当我只有下面的测试案例,
@Test
public void addShouldReturnMinusOneWhenFirstIsGreaterThan200() {
Assert.assertTrue(-1 == App.add(250, 45));
}
输出,
当我拥有所有3次测试,
@Test
public void addShouldReturnTheSumOfTwoIntegersWhenFirstIsLessThan100() {
Assert.assertTrue(65 == App.add(20, 45));
}
@Test
public void addShouldReturnMinusOneWhenFirstIsGreaterThan200() {
Assert.assertTrue(-1 == App.add(250, 45));
}
@Test
public void addShouldReturn200WhenFirstIsGreaterThan100AndLessThan200() {
Assert.assertTrue(200 == App.add(120, 45));
}
输出,
当我有以下测试用例return 200
分支,
@Test
public void addShouldReturn200WhenFirstIsGreaterThan100AndLessThan200() {
Assert.assertTrue(200 == App.add(120, 45));
}
输出,
更新2:
如果我有一个测试用例来检查第一if
条款,
@Test
public void addShouldReturnTheSumOfTwoIntegersWhenFirstIsLessThan100() {
Assert.assertTrue(65 == App.add(20, 45));
}
输出,
我认为,隐藏分支未涉及的仅此测试用例。但下面的其他分支也会覆盖这个神秘的分支。
UPDATE 3:
使用javap -c App.class
后,
Compiled from "App.java"
public class com.vnb.play_cobertura.play_cobertura.App {
public com.vnb.play_cobertura.play_cobertura.App();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":
()V
4: return
public static int add(int, int);
Code:
0: iload_0
1: bipush 100
3: if_icmpge 10
6: iload_0
7: iload_1
8: iadd
9: ireturn
10: iload_0
11: sipush 200
14: if_icmpge 21
17: sipush 200
20: ireturn
21: iconst_m1
22: ireturn
}
德编译的输出,
package com.vnb.play_cobertura.play_cobertura;
public class App
{
public App() {}
public static int add(int a, int b)
{
if (a < 100)
return a + b;
if (a < 200) {
return 200;
}
return -1;
}
}
尝试增加App.add(120,45)的'测试'与预期输出。只是一个猜测,但我想你会得到'6/6'。 –
@JimGarrison我做到了,然后它会是4/4。到目前为止,我可以确定3个分支。我为那些人写了三个问题,问题是另一个问题是什么?和其他人一样,无论如何都是如此。 – prime
显然你没有测试'return 200'分支。如果你测试了所有三个,那么请显示实际代码和Cobertura输出。 –