基于模糊方法的Java单元测试
我正在对Java Period类的方法进行单元测试。方法如下所示:基于模糊方法的Java单元测试,java,unit-testing,junit,Java,Unit Testing,Junit,我正在对Java Period类的方法进行单元测试。方法如下所示: public Period minusDays(long daysToSubtract) { return (daysToSubtract == Long.MIN_VALUE ? plusDays(Long.MAX_VALUE).plusDays(1) : plusDays(-daysToSubtract)); @Test public void testMinusDays () { Period x = Period
public Period minusDays(long daysToSubtract) {
return (daysToSubtract == Long.MIN_VALUE ? plusDays(Long.MAX_VALUE).plusDays(1) : plusDays(-daysToSubtract));
@Test
public void testMinusDays ()
{
Period x = Period.of(1,1,2);
Period y = Period.of(1,1,1);
Assert.assertEquals(y, x.minusDays(1));
}
我的单元测试如下所示:
public Period minusDays(long daysToSubtract) {
return (daysToSubtract == Long.MIN_VALUE ? plusDays(Long.MAX_VALUE).plusDays(1) : plusDays(-daysToSubtract));
@Test
public void testMinusDays ()
{
Period x = Period.of(1,1,2);
Period y = Period.of(1,1,1);
Assert.assertEquals(y, x.minusDays(1));
}
问题是我得到了50%的分支覆盖率,并且不知道我正在测试if-else的哪些部分,因为我无法遵循它。您必须使用x.minusDay(Long.MIN_值)编写一个测试,并使用另一个值编写一个测试。在此之后,您应该有100%您必须使用x.minusDay(Long.MIN_值)编写一个测试,并使用另一个值编写一个测试。在此之后,您应该有100%的第一步:如果
?:代码>太混乱,如果出现以下情况,请用相等的替换它:
public Period minusDays(long daysToSubtract) {
if (daysToSubtract == Long.MIN_VALUE) {
return plusDays(Long.MAX_VALUE).plusDays(1);
}
return plusDays(-daysToSubtract);
}
现在你知道你错过了什么。您测试的是daysToSubtract==1
,但不是可能性daysToSubtract==Long.MIN\u值
,换句话说,您只测试两种情况中的一种,占50%。第一步:如果?:代码>太混乱,如果出现以下情况,请用相等的替换它:
public Period minusDays(long daysToSubtract) {
if (daysToSubtract == Long.MIN_VALUE) {
return plusDays(Long.MAX_VALUE).plusDays(1);
}
return plusDays(-daysToSubtract);
}
现在你知道你错过了什么。你测试的是daysToSubtract==1
,但不是可能性daysToSubtract==Long.MIN\u值
,换句话说,你只测试两种情况中的一种,占50%。?如果问题解决了,请不要“破坏”你的问题。只要接受帮助你解决问题的答案。如果当前的答案都没有帮助,你也可以自己写一个答案?如果问题解决了,请不要“破坏”你的问题。只要接受帮助你解决问题的答案。如果当前的答案都没有帮助,也可以自己写一个答案。即使不提高代码的可读性,通过简单的逻辑,也不可能只执行一个测试就覆盖所有分支。如果你有两个分支,你需要两个测试。是的,但对我来说,主要的问题是,NoName博士忽略了一个简单的事实,即实际上有两个分支,因此提高可读性可能会有所帮助,特别是对于不太熟悉的用户:即使不提高代码的可读性,通过简单的逻辑,也不可能只执行一个测试就覆盖所有分支。如果你有两个分支,你需要两个测试。是的,但对我来说,主要的问题是,NoName博士忽略了一个简单的事实,即实际上有两个分支,因此提高可读性可能会有所帮助,特别是对于不太熟悉的用户:陈述