ScalaTest:引用 NoArgTest
ScalaTest: referencing NoArgTest
我正在玩 sharing fixtures,尤其是 withFixture(NoArgTest)。但是,如果引用 NoArgTest,我的代码将无法编译。
我唯一的依赖:
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_2.11</artifactId>
<version>3.0.0</version>
</dependency>
我的代码试图将 NoArgTest 引用为类型:
1 class Example {
2 def foo(test: org.scalatest.TestSuite) = "foo"
3 def bar(test: org.scalatest.TestSuite.NoArgTest) = "bar"
4 }
mvn 编译:
[WARNING] Expected all dependencies to require Scala version: 2.11.8
[WARNING] org.scalatest:scalatest_2.11:3.0.0 requires scala version: 2.11.8
[WARNING] org.scalactic:scalactic_2.11:3.0.0 requires scala version: 2.11.8
[WARNING] org.scala-lang:scala-reflect:2.11.8 requires scala version: 2.11.8
[WARNING] org.scala-lang.modules:scala-xml_2.11:1.0.5 requires scala version: 2.11.7
[WARNING] Multiple versions of scala libraries detected!
...
[ERROR] Example.scala:4: error: object TestSuite is not a member of package org.scalatest
[ERROR] Note: trait TestSuite exists, but it has no companion object.
[ERROR] def bar(test: org.scalatest.TestSuite.NoArgTest) = "bar"
为什么?
你可以写TestSuite#NoArgTest
(这是所有独立于套件的NoArgTest
的通用类型),或者suite.NoArgTest
如果你已经有一个实例suite: TestSuite
.请注意,如果 suite
是成员参数,则它们需要位于单独的参数列表中:
def bar(suite: TestSuite)(test: suite.NoArgTest) = ...
有关详细信息,请参阅 What are the differences between Scala’s inner classes and Java’s Inner/nested classes? 的答案。
我正在玩 sharing fixtures,尤其是 withFixture(NoArgTest)。但是,如果引用 NoArgTest,我的代码将无法编译。
我唯一的依赖:
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_2.11</artifactId>
<version>3.0.0</version>
</dependency>
我的代码试图将 NoArgTest 引用为类型:
1 class Example {
2 def foo(test: org.scalatest.TestSuite) = "foo"
3 def bar(test: org.scalatest.TestSuite.NoArgTest) = "bar"
4 }
mvn 编译:
[WARNING] Expected all dependencies to require Scala version: 2.11.8
[WARNING] org.scalatest:scalatest_2.11:3.0.0 requires scala version: 2.11.8
[WARNING] org.scalactic:scalactic_2.11:3.0.0 requires scala version: 2.11.8
[WARNING] org.scala-lang:scala-reflect:2.11.8 requires scala version: 2.11.8
[WARNING] org.scala-lang.modules:scala-xml_2.11:1.0.5 requires scala version: 2.11.7
[WARNING] Multiple versions of scala libraries detected!
...
[ERROR] Example.scala:4: error: object TestSuite is not a member of package org.scalatest
[ERROR] Note: trait TestSuite exists, but it has no companion object.
[ERROR] def bar(test: org.scalatest.TestSuite.NoArgTest) = "bar"
为什么?
你可以写TestSuite#NoArgTest
(这是所有独立于套件的NoArgTest
的通用类型),或者suite.NoArgTest
如果你已经有一个实例suite: TestSuite
.请注意,如果 suite
是成员参数,则它们需要位于单独的参数列表中:
def bar(suite: TestSuite)(test: suite.NoArgTest) = ...
有关详细信息,请参阅 What are the differences between Scala’s inner classes and Java’s Inner/nested classes? 的答案。