2013-06-21 2 views
5

Я хочу получить имя текущего метода TestCase в методе @Before. Пример Получить имя исполняемого @Test метода в @Before в JUNIT

public class SampleTest() 
{ 
    @Before 
    public void setUp() 
    { 
     //get name of method here 
    } 

    @Test 
    public void exampleTest() 
    { 
     //Some code here. 
    } 
} 
+0

http://stackoverflow.com/questions/473401/get-name-of-curren tly-executing-test-in-junit-4? – ivarni

+0

добавьте поле 'previousName' в свой тестовый класс и установите его значение в конце каждого метода тестирования с помощью параметра After – TecHunter

ответ

16

Как обсуждалось here, попытайтесь использовать @Rule и АСМАП комбинацию.

Согласно documentation перед тем, как метод должен иметь тестовое имя.

Аннотации полей, которые содержат правила. Такое поле должно быть общедоступным, а не статическим и подтипом TestRule. Заявление передается TestRule будет работать любой Перед методами, то метод испытания, и наконец любой После методов, бросая исключение, если любой из них не в состоянии

Вот тест с использованием JUnit 4.9

public class JUnitTest { 

    @Rule public TestName testName = new TestName(); 

    @Before 
    public void before() { 
     System.out.println(testName.getMethodName()); 
    } 

    @Test 
    public void test() { 
     System.out.println("test ..."); 
    } 
} 
2

Попробуйте использовать @Rule аннотацию с org.junit.rules.TestName класса

@Rule public TestName name = new TestName(); 

@Test 
public void test() { 
    assertEquals("test", name.getMethodName()); 
}