eclipse - 应用于 Scala 类的 @Test 注释的目的是什么?

标签 eclipse scala testing junit scala-ide

我在 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/

相关文章:

java - Scala 代码看起来更简单/行数更少的 Scala 和 Java 代码示例?

java - android可以将字符串作为代码执行吗?

c - 如何编译32位?

json - 在spark-streaming中解析json

php - 使用 phpunit 进行 Laravel 测试

unit-testing - 试图获得对 TDD 好处的信心

codeigniter - 如何使用 CodeIgniter PART 2 测试 Controller ?

java - 动态更改 Eclipse 工具栏图标

java - 从 Eclipse Luna 卸载 JBoss Tools 4.3.0 Final (Hibernate)

scala - spark.default.parallelism for Parallelize RDD 默认为 2 for spark submit