2

パラメータ化されたテストに名前を付けるために、junitの最新ビルドの新機能を利用したい

私はjavaとscalaで書かれた次の2つのテストを持っていますが、scalaテストはコンパイラエラーを生成します:

エラー:不明な注釈引数名:name @Parameters(name = "{0}")def data:util.Collection [Array [AnyRef]] = util.Arrays.asList(Array( "x")、Array( "y" )、Array( "z"))

このエラーの原因となる実装の違いは何ですか?

java

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import java.util.Arrays;
import java.util.Collection;

import static org.junit.Assert.fail;

@RunWith(Parameterized.class)
public class ParameterizedTest {
    @Parameters(name = "{0}")
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[]{"x"}, new Object[]{"y"}, new Object[]{"z"});
    }

    @Test
    public void foo() {
        fail("bar");
    }
}

スカラ

import java.util
import org.junit.Assert._
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import org.junit.runners.Parameterized._

@RunWith(classOf[Parameterized])
class ParameterizedScalaTest {
  @Test def foo() {
    fail("bar")
  }
}

object ParameterizedScalaTest {
  @Parameters(name = "{0}") def data: util.Collection[Array[AnyRef]] = util.Arrays.asList(Array("x"), Array("y"), Array("z"))
}
4

2 に答える 2

0

@Parametersは内部として定義されているため、フルネームを指定する必要があるようです。

試す

@Parameters(Parameters.name = "{0}")

少なくとも、それが@Parametersと@Testの定義で観察できる唯一の重要な違いであり、これは機能します。

@Test(timeout = 10)
于 2012-08-01T17:58:10.443 に答える
0

ここでの問題は、junit-dep.jarがjMock2.4.0への一時的な依存関係を通じてクラスパス上にあることが原因であることが判明しました。

これを削除するとコンパイラエラーが修正されました。これはscalacの問題ですが、javacの問題ではありません。

于 2012-08-02T02:54:42.420 に答える