gpt4 book ai didi

java - 测试检查 boolean 表达式的方法时的 Junit 模式

转载 作者:行者123 更新时间:2023-12-01 17:32:56 24 4
gpt4 key购买 nike

我想知道测试仅检查 boolean 表达式的方法的最佳方法是什么。

例如,我想测试这个方法:

boolean canDoSomething( Account account, User user )
{
return ( account.isAck()
&& account.getEmail() != null
&& account.getName().equals( user.getProvider() );
}

我是否必须为每个 boolean 组合编写一个 junit 方法?就像whenNotAckThenDontDoSomething()whenEmailIsNullThenDontDoSomething() ...

我认为这有点难看,所以我想知道是否有更好的方法来做到这一点。

最佳答案

一如既往地进行测试,直到恐惧变成无聊。也许您不需要所有八种可能的组合 - 也许尝试四种:其中一种所有内容都有效,然后在其他每个测试中使一个条件为假。

有些人会因为我这么说而把我烧死,但你可能可以将其表达为一次阳性测试和一次阴性测试:

public void testCanDoSomething_allValid() {
assert.isTrue(foo.canDoSomething(new Account(true, "x@y.z", "Fred"),
new User("Fred")));
}

public void testCanDoSomething_negative() {
assert.isFalse(foo.canDoSomething(new Account(false, "x@y.z", "Fred"),
new User("Fred")));
assert.isFalse(foo.canDoSomething(new Account(true, null, "Fred"),
new User("Fred")));
assert.isFalse(foo.canDoSomething(new Account(true, "x@y.z", "Ginger"),
new User("Fred")));
}

虽然肯定有“每个测试中只测试一条路径”的说法,但我发现像这样对非常简单的测试进行分组有时可以导致更简单的测试可读性。当然,当您的测试开始执行更复杂的操作时,您应该将它们分解。

(还有一些可能性,例如 useraccount 为空,或者用户名为空等,您可能需要考虑。)

关于java - 测试检查 boolean 表达式的方法时的 Junit 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9274253/

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