我在 Java 中有一个项目,在 Scala 中进行了 JUnit 测试。每个测试类都用@Test
注解:
import org.junit.Test
@Test
class SomeTest {
...
}
JUnit API说 @Test
是一个方法注解。但是,当我从类中删除 @Test
注释同时保持方法注释完好无损时,从 Eclipse 运行时许多测试不会执行。
那么 @Test
注释应用于类的目的是什么?为什么在删除这些注释后某些测试不运行?
最佳答案
Scala 不检查 ElementType
的注解(即使在 Scala IDE 之外),因此在 Scala 中类的 @Test 注解没有“目的”。
事实上,你可以对一个类应用任何注解,Scala 不会阻止这一点。使用以下示例:
import org.junit.Test
import org.junit.Rule
@Rule
class Foo {
@Test
def test(filename: String) = println("test");
}
编译后,您会在类上获得@Rule 注释。这是 known feature ,因为 AFAIK,您可以在源中的字段上“应用”注释,但如果您使用 target annotations 中的一个,则实际上会在方法上结束.
如果您正在通过任何标准测试运行程序运行测试,那么类上的 @Test
应该没有任何区别。唯一重要的是方法上的 @Test
注释。
在 Scala 中使用 JUnit 时,您应该遵循与 Java 相同的规则。
关于eclipse - 应用于 Scala 类的 @Test 注释的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8634269/