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



我想获得@Before方法中当前执行TestCase方法的名称。示例

public class SampleTest()
{
    @Before
    public void setUp()
    {
        //get name of method here
    }
    @Test
    public void exampleTest()
    {
        //Some code here.
    }
 }

正如这里所讨论的,尝试使用@Rule和TestName组合。

根据方法之前的文档,应该有测试名称。

注释包含规则的字段。这样的字段必须是公开的,而不是static,以及TestRule的子类型。语句传递给TestRule将运行任何Before方法,然后是Test方法,然后是finally any 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 ...");
    }
}

尝试使用org.junit.rules.TestName类的@Rule注释

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

最新更新