6

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

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

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

2 回答 2

21

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

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

注释包含规则的字段。这样的字段必须是公共的,而不是静态的,并且是 TestRule 的子类型。传递给 TestRule 的 Statement 将运行任何 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 ...");
    }
}
于 2013-06-21T08:20:09.880 回答
3

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

@Rule public TestName name = new TestName();

@Test 
public void test() {
    assertEquals("test", name.getMethodName());
}
于 2013-06-21T08:21:47.600 回答