在JUNIT中的@Before中获取当前正在执行的@Test方法的名称

时间:2013-06-21 08:06:15

标签: java junit

我想在@Before方法中获取当前正在执行的TestCase方法的名称。 实施例

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

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

2 个答案:

答案 0 :(得分:19)

正如here所述,尝试使用@Rule和TestName组合。

根据documentation之前的方法应该有测试名称。

  

注释包含规则的字段。这样的领域必须是公开的,而不是   static,以及TestRule的子类型。声明传递给了   TestRule将运行任何Before方法,然后运行Test方法,和   最后任何After方法,如果其中任何一个失败则抛出异常

以下是使用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 ...");
    }
}

答案 1 :(得分:2)

尝试在@Rule

中使用org.junit.rules.TestName注释
@Rule public TestName name = new TestName();

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