我想在junit的最新版本中使用新功能,以命名我的参数化测试
我有以下两个用java和& amp;写的测试。 scala,但scala测试会生成编译器错误:
错误:未知的注释参数名称:name @Parameters(name = “{0}”)def数据:util.Collection [Array [AnyRef]] = util.Arrays.asList(Array(“x”),Array(“y”),Array(“z”))
导致此错误的实施有何不同?
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"))
}
答案 0 :(得分:0)
因为@Parameters被定义为内部,所以您似乎需要提供全名。
尝试
@Parameters(Parameters.name = "{0}")
至少,这是我在@Parameters和@Test的定义中可以观察到的唯一重要区别,这有效:
@Test(timeout = 10)
答案 1 :(得分:0)
事实证明这里的问题是由于junit-dep.jar通过对jMock 2.4.0的瞬态依赖而在类路径上
删除修复了编译器错误,奇怪这是scalac的问题而不是javac。