gpt4 book ai didi

java - 如何在 IntelliJ IDEA 中获得实际的代码覆盖率报告?

转载 作者:行者123 更新时间:2023-12-01 14:09:08 39 4
gpt4 key购买 nike

我有一个名为 SomeClass 的简单类:

public class SomeClass {

public int value = 0;

public void inc() {
value++;
}

public void dec()
{
if (isBiggerThanFive()) value--;
value--;
}

private boolean isBiggerThanFive() {
return value > 5;
}
}

还有一个名为TheTest的测试类:

class TheTest {

SomeClass t;

@BeforeEach
void setUp() {
t = new SomeClass();
}

@Test
public void whenNewTestIsCreated_ValueIsZero()
{
assertEquals(t.value, 0);
}

@Test
public void whenIncIsCalledWithValueOfZero_ValueIsOne()
{
t.inc();
assertEquals(t.value, 1);
}

@Test
public void whenDecIsCalledWithValueOfZero_ValueIsNegativeOne()
{
t.dec();
assertEquals(t.value, -1);
}
}

请注意函数 dec 的结构以及整个 if 条件和语句如何位于同一行。在测试中,这部分当值大于 5 时减 2 的部分没有被测试。所以我假设我应该在覆盖报告中看到这部分没有被覆盖。但这就是我得到的:

当我让语句在它自己的行上时,我得到了正确的结果:

即使代码完全相同,但仅基于代码的结构,我会得到不同的结果。当一条线的一部分没有被实际覆盖时,我如何才能指示它没有被覆盖?

最佳答案

IntelliJ 的测试覆盖率运行器有不同的运行设置(出于性能原因)。默认情况下,使用 Sampling 模式。这导致代码行覆盖率可以忽略不计(执行)减慢。 IntelliJ Test Coverage Samling setting现在,如果您想准确收集分支覆盖率(例如 if 语句),则可以使用 Trace 模式。 IntelliJ Test Coverage Trace setting使用 Trace 模式,您将获得以下测试覆盖率。

Trace coverage report

Trace coverage hits

这在 IntelliJ 的帮助网站上有进一步的记录。见 Configure code coverage options .

关于java - 如何在 IntelliJ IDEA 中获得实际的代码覆盖率报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61924805/

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