1. ホーム

[解決済み】JUnit 4で現在実行中のテストの名前を取得する

2022-04-07 04:20:14

質問

JUnit 3 では、現在実行中のテストの名前を次のように取得できました。

public class MyTest extends TestCase
{
    public void testSomething()
    {
        System.out.println("Current test is " + getName());
        ...
    }
}

と表示します。

JUnit 4 でこれを行うための、すぐに使える、あるいは簡単な方法はありますか?

背景 明らかに、私はテストの名前を表示したいだけではありません。私は、テストと同じ名前のリソースに格納されているテスト固有のデータをロードしたいと思います。あなたは知っています。 設定より規約 といった具合に。

解決方法は?

JUnit 4.7では、この機能が追加されたようです。 テスト名ルール . これでメソッド名を取得できるようです。

import org.junit.Rule;

public class NameRuleTest {
    @Rule public TestName name = new TestName();

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

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