Intellij idea 使用Jacoco的分支覆盖
当yearsToSubtract的值为Long.MIN_值时,我在点击yearsToSubtract==Long.MIN_值分支时遇到问题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
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的注释,我尝试了您提到的方法,但问题是它只覆盖了一个分支,而发生整数溢出的另一个分支却没有覆盖。