2013-06-21 23 views
5

Tôi muốn hiện đang thực hiện phương pháp thử trong @Before để tôi có thể áp dụng chú thích trên phương pháp hiện đang thực thi.Hiện đang thực hiện phương pháp @Test trong @Trước tiên trong JUnit 4

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

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

Xem http://stackoverflow.com/questions/473401/get-name-of-currently -executing-test-in-junit-4 để thảo luận thêm về điều này – centic

Trả lời

8

thử quy tắc TestName

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

    @Before 
    public void setUp() { 
    Method m = TestCaseExample.class.getMethod(testName.getMethodName());  
    ... 
    } 
    ... 
+0

Mã này cung cấp tên của phương thức hiện đang thi hành và với tên của phương thức chúng ta không thể nhận được chú thích được áp dụng cho nó. Vì vậy, tôi muốn phương pháp thực tế và sau đó tôi muốn gọi method.getAnnotation (MyAnnotation.class) – user2508111

+0

Nếu bạn có tên phương pháp, bạn có thể sử dụng phản xạ để có được phương pháp thực tế. –

+1

Thậm chí tốt hơn, bạn có thể viết phiên bản 'TestName' của riêng bạn mà lấy chú thích, thay vì tên. –

3

Evgeniy chỉ vào TestName quy tắc (mà tôi chưa bao giờ nghe nói về - cảm ơn, Evgeniy). Thay vì sử dụng nó, tôi khuyên bạn nên sử dụng nó làm mô hình cho quy tắc của riêng bạn mà sẽ nắm bắt chú thích quan tâm:

public class TestAnnotation extends TestWatcher { 
    public MyAnnotation annotation; 

    @Override 
    protected void starting(Description d) { 
     annotation = d.getAnnotation(MyAnnotation.class); 
    } 
} 
+0

Cảm ơn. Nó cũng hữu ích. – user2508111