我们什么时候在JUnit中使用'Theories'?

时间:2012-10-16 10:23:19

标签: java junit

一些测试与JUnit中的注释@RunWith(Theories.class)一起使用,我不知道我们何时以及为何使用它?

2 个答案:

答案 0 :(得分:4)

当您希望测试专注于输入和输出之间的广义关系时,您应该使用它们。请参阅:https://blogs.oracle.com/jacobc/entry/junit_theories

答案 1 :(得分:0)

我认为捕获多种类型的输入是一回事。高级别的想法是,您想要测试您的方法是否适用于所有可能的输入。

例如,假设我有一些复杂的业务流程需要5个不同的输入,并且让我们说每个输入,有10个可能的状态,所以我们最终得到10个* 10 * 10 * 10 * 10 = 100,000个可能的输入状态,这意味着我们需要事先知道所有这100,000个输出值是什么。

但是,您可能意识到您并不需​​要实际列举所有100,000个州。可能是您感兴趣的子集。例如,让我们理论化:

"管理员没有权限限制"。如果我想断言这是真的,我的测试最终看起来像下面的伪代码。

@Test
public void AdminsHaveNoPermissionRestriction(User user, BusinessProcess bp, Input a, Input b ...) {
   Assume.assumeThat("User is an admin", user.hasRole(admin);

   // .. rest of test which uses bp, a, b etc...
)

好消息是我们跳过不感兴趣的对象(非管理员),因为它没有做出假设。