2013-06-21 2 views
5

मैं वर्तमान में @Before में परीक्षण विधि निष्पादित करना चाहता हूं ताकि मैं वर्तमान में निष्पादन विधि पर एनोटेशन लागू कर सकूं।वर्तमान में @Tefore में @Test विधि को निष्पादित करें JUnit 4

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

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

देखें http://stackoverflow.com/questions/473401/get-name-of-currently: बल्कि यह का उपयोग करने से, मैं इसे अपने खुद के नियम के लिए एक मॉडल है जो ब्याज की टिप्पणी पर कब्जा के रूप में करने की सलाह देते इस – centic

उत्तर

8

कोशिश TestName नियम

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

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

के बारे में कुछ और चर्चाओं के लिए -एक्सेटिंग-टेस्ट-इन-जूनिट -4 इस कोड में वर्तमान में निष्पादन विधि का नाम दिया गया है और विधि के नाम के साथ हमें एनोटेशन लागू नहीं किया जा सकता है। इसलिए मुझे वास्तविक विधि चाहिए और फिर मैं विधि को कॉल करना चाहता हूं .getAnnotation (MyAnnotation.class) – user2508111

+0

यदि आपके पास विधि का नाम है तो आप वास्तविक विधि प्राप्त करने के लिए प्रतिबिंब का उपयोग कर सकते हैं। –

+1

इससे भी बेहतर, आप 'टेस्टनाम' का अपना संस्करण लिख सकते हैं जो नाम के बजाए एनोटेशन को पकड़ता है। –

3

एव्गेनि TestName शासन की ओर इशारा किया है (जो मैं कभी नहीं सुना था - धन्यवाद, एव्गेनि)।

public class TestAnnotation extends TestWatcher { 
    public MyAnnotation annotation; 

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

धन्यवाद। यह भी उपयोगी है। – user2508111

संबंधित मुद्दे