18

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

public class MyTest extends TestCase {
    public void testSomething() {
        assertThat(getName(), is("testSomething"));
    }
}

スポックでこれを行うにはどうすればよいですか?テストが互いに干渉しないように、共有リソースのキーとしてテスト名を使用したいと思います。

4

2 に答える 2

21

1 つの解決策は、JUnit の TestName ルールを活用することです。

import org.junit.Rule
import org.junit.rules.TestName

class MySpec extends Specification {
    @Rule TestName name = new TestName()

    def "some test"() {
        expect: name.methodName == "some test"
    }
}

これには JUnit 4.7 以降が必要です。

于 2011-12-03T04:38:44.560 に答える