9

我想获取当前正在执行的测试方法,@Before以便我可以将注释应用于当前正在执行的方法。

public class TestCaseExample {
       @Before
       public void setUp() {
           // get current method here.
       }

       @Test
       @MyAnnotation("id")
       public void someTest {
           // code
       }
}         
4

2 回答 2

15

试试 TestName 规则

public class TestCaseExample {
  @Rule
  public TestName testName = new TestName();

  @Before
  public void setUp() {
    Method m = TestCaseExample.class.getMethod(testName.getMethodName());       
    ...
  }
  ...
于 2013-06-21T10:19:48.373 回答
3

Evgeniy 指出了TestName规则(我从未听说过 - 谢谢,Evgeniy!)。我建议不要使用它,而是将其作为您自己的规则的模型,该规则将捕获感兴趣的注释:

public class TestAnnotation extends TestWatcher {
    public MyAnnotation annotation;

    @Override
    protected void starting(Description d) {
        annotation = d.getAnnotation(MyAnnotation.class);
    }
}
于 2013-06-21T10:40:18.427 回答