【发布时间】:2015-04-12 22:45:54
【问题描述】:
我有一个我想进行单元测试的方法,它检查三张卡之间的匹配。因为卡片是随机生成的,所以无法设置三张我知道会匹配或不会匹配的卡。我需要这样做来对我的isMatch() 方法进行单元测试。
是否可以更改我的 Card 类以添加一种方法来显式设置其值以便我可以对其进行单元测试?一般来说,对源代码进行少量添加以使单元测试成为可能是可以接受的,还是有更好(或更正确)的方法来做到这一点?
【问题讨论】:
-
你应该将随机性的来源,
Random实例注入你的类。在您的测试中,您可以创建一个已知的随机序列并测试逻辑。代码应该写成可测试的。如果它不可测试,是的,应该改变它。 -
你没有使用种子来实现随机性吗?你写的地方没有小日志文件,所以你可以重新创建?
-
@BoristheSpider,你能详细说明注入
Random实例吗?我不清楚你的意思。 -
阅读Inversion of Control 模式。
-
+1 表示Boris the Spider's 评论,但我认为Dependency Injection 这个词更容易理解和理解。
标签: java unit-testing junit4