Intellij idea 使用Jacoco的分支覆盖

Intellij idea 使用Jacoco的分支覆盖,intellij-idea,junit,jacoco,qa,period,Intellij Idea,Junit,Jacoco,Qa,Period,当yearsToSubtract的值为Long.MIN_值时,我在点击yearsToSubtract==Long.MIN_值分支时遇到问题 public Period minusYears(long yearsToSubtract) { return (yearsToSubtract == Long.MIN_VALUE ?plusYears(Long.MAX_VALUE).plusYears(1) : plusYears(-yearsToSubtract)); } public Per

当yearsToSubtract的值为Long.MIN_值时,我在点击yearsToSubtract==Long.MIN_值分支时遇到问题

public Period minusYears(long yearsToSubtract) {
    return (yearsToSubtract == Long.MIN_VALUE ?plusYears(Long.MAX_VALUE).plusYears(1) : plusYears(-yearsToSubtract));
}

public Period plusYears(long yearsToAdd) {
     if (yearsToAdd == 0) {
        return this;
    }
    return create(Math.toIntExact(Math.addExact(years, yearsToAdd)), months, days);
}
这是我的plusYears函数,我的create函数只是一个getter函数,它设置年、月和日的值

这是当yearsToSubtract的值为Long.MIN_值时覆盖分支的测试用例

   @Test
    public void testIfMinusYears() {

    Period p = Period.of(1, 1, 1);


    try {
        p.minusYears(Long.MIN_VALUE);
    } catch (ArithmeticException e) {

    }
}
    @Test
public void testMinusYears() {
    Period p = Period.of(0, 0, 0);

    p.minusYears(-100);

}
这是我的测试用例,当yearsToSubtract是一个不等于Long.MIN_值的值时,它将命中另一个分支

   @Test
    public void testIfMinusYears() {

    Period p = Period.of(1, 1, 1);


    try {
        p.minusYears(Long.MIN_VALUE);
    } catch (ArithmeticException e) {

    }
}
    @Test
public void testMinusYears() {
    Period p = Period.of(0, 0, 0);

    p.minusYears(-100);

}
of(年、月、日)是一个函数,用于设置年、月和日的值

有人能告诉我如何击中那个树枝吗?这是我班上的一个作业,我已经尝试了所有可能的方法,但没有弄清楚如何击中那个树枝


谢谢

我是否正确地理解了您正在为您的类编写一个针对
java.time.Period
的单元测试?我只是想确定我是否理解。猜测:为了让你的分支机构被视为覆盖,你必须能够检查你是否得到了预期的结果。由于您的测试生成了一个
算术异常
(您吞下了它,顽皮),因此无法测试结果。如果这是一个充分的解释,您可以尝试
Period p=Period.of(-5,1,1)
代替了。感谢@Ole V.V的评论,我尝试了您提到的方法,但问题是它只覆盖了一个分支,而发生整数溢出的另一个分支没有覆盖。我是否正确理解您正在为类编写
java.time.Period
的单元测试?我只是想确定我是否理解。猜测:为了让你的分支机构被视为覆盖,你必须能够检查你是否得到了预期的结果。由于您的测试生成了一个
算术异常
(您吞下了它,顽皮),因此无法测试结果。如果这是一个充分的解释,您可以尝试
Period p=Period.of(-5,1,1)取而代之。感谢@Ole V.V的注释,我尝试了您提到的方法,但问题是它只覆盖了一个分支,而发生整数溢出的另一个分支却没有覆盖。