gpt4 book ai didi

java - JaCoCo 的指令覆盖率 : Number of instructions is not correct

转载 作者:行者123 更新时间:2023-11-29 03:07:21 24 4
gpt4 key购买 nike

这是一个简单的测试方法:

public static boolean isPowerOfTwo(final int i) {
return (i > 0) && (i & (i - 1)) == 0;
}

为了获取字节码,我在 .class 文件上运行 javap -c:

public static boolean isPowerOfTwo(int);
Code:
0: iload_0
1: ifle 14
4: iload_0
5: iload_0
6: iconst_1
7: isub
8: iand
9: ifne 14
12: iconst_1
13: ireturn
14: iconst_0
15: ireturn

如你所见,有16字节码指令。

现在我运行一个简单的单元测试

@Test
public void testPowerOfTwoInt() {
assertFalse(Util.isPowerOfTwo(Integer.MAX_VALUE));
assertFalse(Util.isPowerOfTwo(0));
assertTrue(Util.isPowerOfTwo(64));
assertTrue(Util.isPowerOfTwo(128));
assertFalse(Util.isPowerOfTwo(-128));
}

但 JaCoCo 告诉我,isPowerOfTwo 仅包含 12 字节代码指令:Instruction Coverage

只有 12 个而不是 16 个字节代码指令的原因是什么?类文件由 Eclipse 编译器生成。 JaCoCo 是否运行另一个类文件?

最佳答案

再次查看您的输出 - javap 只报告了 12 条指令:

public static boolean isPowerOfTwo(int);
Code:
0: iload_0
1: ifle 14
//There's no 2 or 3 here...
4: iload_0
5: iload_0
6: iconst_1
7: isub
8: iand
9: ifne 14
//and no 10 or 11 here.
12: iconst_1
13: ireturn
14: iconst_0
15: ireturn

关于java - JaCoCo 的指令覆盖率 : Number of instructions is not correct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31439529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com