的第一个参数PotentialAssignment.forValue
是值的“名称”。如果您的方法通过,则不使用它@Theory
,但如果失败,则用于组装错误消息。这是一个例子:
@RunWith(Theories.class)
public class CustomParameterSupplierTest {
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
@ParametersSuppliedBy(FooSupplier.class)
public @interface Foo {}
public static class FooSupplier extends ParameterSupplier {
@Override
public List<PotentialAssignment> getValueSources(ParameterSignature sig) {
return Arrays.asList(
PotentialAssignment.forValue("one", 1),
PotentialAssignment.forValue("two", 2)
);
}
}
@Theory
public void test(@Foo int foo) {
assertThat(foo, is(1));
}
}
如果使用 Junit 4.11 执行此测试,您将收到以下错误:
org.junit.experimental.theories.internal.ParameterizedAssertionError: test(two)
顺便说一句,在即将发布的 JUnit 4.12 中,错误报告得到了进一步改进,您将收到以下错误:
org.junit.experimental.theories.internal.ParameterizedAssertionError: test("2" <from two>)