Java JUnit自定义注释

Java JUnit自定义注释,java,junit,annotations,Java,Junit,Annotations,我想创建一个自定义JUnit注释,类似于@Test中的预期标记,但我也想检查注释消息 有什么提示吗,或者可能已经准备好了吗?要让JUnit4获取您的自定义注释,您需要编写自己的自定义运行程序实现,然后将其提供给测试类上的RunWith注释 您可以从查看BlockJUnit4ClassRunner开始,它是JUnit4的默认实现运行程序(如果内存很好的话) 假设您希望使用自定义运行程序MyRunner获取名为@MyTest的自定义注释,那么您的测试类将如下所示: @RunWith(MyRunner

我想创建一个自定义JUnit注释,类似于@Test中的预期标记,但我也想检查注释消息


有什么提示吗,或者可能已经准备好了吗?

要让JUnit4获取您的自定义注释,您需要编写自己的自定义运行程序实现,然后将其提供给测试类上的RunWith注释

您可以从查看BlockJUnit4ClassRunner开始,它是JUnit4的默认实现运行程序(如果内存很好的话)

假设您希望使用自定义运行程序MyRunner获取名为@MyTest的自定义注释,那么您的测试类将如下所示:

@RunWith(MyRunner.class)
class Tests {
   ...
   @MyTest
   public void assumeBehaviour() {
      ...
   }
}

“Reid Mac”的答案很好地说明了自定义注释是如何实现的。

JUnit 4.9加强了库对测试“规则”的使用,我认为这可能与自定义注释一样有效。首先来看一看。您可以基于该接口实现一个规则,然后使用@ClassRule或(方法级)@rule注释在测试中发挥作用

一个很好的具体示例是,它允许您指定异常,如@Test does的预期参数(然后是一些)。

您可以创建第一个答案中提到的自定义,或者您可以使用/扩展已具有的方法来处理测试的开始/结束。 有一个方法
apply(语句库,描述)
其中描述实际上是测试方法的包装。有一个很好的方法,可以通过指定要处理的自定义注释来实现您想要的功能