2016-09-27 3 views
1

Ich spiele mit sharing fixtures, insbesondere mitFixture (NoArgTest). Mein Code kompiliert jedoch nicht, wenn NoArgTest referenziert wird.ScalaTest: Referenzieren NoArgTest

Meine einzige Abhängigkeit:

<dependency> 
     <groupId>org.scalatest</groupId> 
     <artifactId>scalatest_2.11</artifactId> 
     <version>3.0.0</version> 
    </dependency> 

Mein Code versucht NoArgTest als eine Art zu verweisen:

1 class Example { 
2  def foo(test: org.scalatest.TestSuite) = "foo" 
3  def bar(test: org.scalatest.TestSuite.NoArgTest) = "bar" 
4 } 

mvn Kompilierung:

[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" 

Warum?

Antwort

0

können Sie schreiben TestSuite#NoArgTest (dies ist die häufigste Form aller NoArgTest s unabhängig von der Suite), oder suite.NoArgTest, wenn Sie bereits suite: TestSuite eine Instanz haben. Beachten Sie, dass, wenn suite Mitglied Parameter ist, sie in separaten Parameterlisten sein müssen:

def bar(suite: TestSuite)(test: suite.NoArgTest) = ... 

Siehe die Antworten auf What are the differences between Scala’s inner classes and Java’s Inner/nested classes? für weitere Details.