29

最近在研究和实现JUnit框架。因此,我知道 JUnit 中使用的注释很少:- @Test, @Before, @After, @Ignore, @BeforeClass, @AfterClass, @Runwith(Suite.class), @SuiteClasses({}), @Parameters,@RunWith(Parameterized.class)@Rule.

我确信在 JUnit 中使用了更多注释。谁能指导我列出可以使用的更多注释以及在什么情况下使用它们?

谢谢。

4

1 回答 1

56

这个 Github 搜索 ( @interface) 为您提供了所有注释的列表:

https://github.com/junit-team/junit/search?q=%22%40interface%22&type=代码

基本注释

@Test @Before @After @AfterClass @BeforeClass @Ignore @Runwith

参数化测试

对于参数化测试使用@Parameters@RunWith(Parameterized.class)
https://github.com/junit-team/junit/wiki/Parameterized-tests

类别

@Category
将测试分组。例如快、慢等。

https://github.com/junit-team/junit/wiki/Categories

@IncludeCategory
仅运行使用注释给出的类别或该类别的子类型进行注释的类和方法@IncludeCategory

@ExcludeCategory
倒数@IncludeCategory

规则

@Rule
规则允许非常灵活地添加或重新定义测试类中每个测试方法的行为。例如,创建临时文件夹规则以在运行测试时创建临时文件夹。

https://github.com/junit-team/junit/wiki/Rules

理论及相关注释

@Theory
理论给出更灵活和更有表现力的断言

https://github.com/junit-team/junit/wiki/Theories

@DataPoint
注释字段或方法@DataPoint将导致字段值或方法返回的值用作该类中理论的潜在参数

@DataPoints

@Datapoint
对数组或可迭代类型字段或方法进行注释的扩展@DataPoints 将导致数组中的值或给定的可迭代值用作该类中理论的潜在参数

@FromDataPoints

注释@Theory方法的参数@FromDataPoints会将被视为该参数潜在值的数据点限制为仅 @DataPoints具有给定名称的数据点

@ParametersSuppliedBy
注释@Theory方法参数@ParametersSuppliedBy会导致ParameterSupplier在作为理论运行时为其提供来自命名的值

@TestedOn

注释采用@TestedOn一组值作为注释参数的数据点。

例如

@Theory
public void multiplyIsInverseOfDivideWithInlineDataPoints(
        @TestedOn(ints = {0, 5, 10}) int amount,
        @TestedOn(ints = {0, 1, 2}) int m
) {
    assumeThat(m, not(0));
    assertThat(new Dollar(amount).times(m).divideBy(m).getAmount(), is(amount));
}
于 2014-07-22T02:38:29.973 回答