一些测试与JUnit中的注释@RunWith(Theories.class)一起使用,我不知道我们何时以及为何使用它?
答案 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...
)
好消息是我们跳过不感兴趣的对象(非管理员),因为它没有做出假设。