【问题标题】:Scalatest 2.10 with akka.TestKit, weird compilier error带有akka.TestKit的Scalatest 2.10,奇怪的编译器错误
【发布时间】:2014-08-20 02:46:16
【问题描述】:

我正在使用 scala IDE 进行开发。我有几个正在测试的演员。我编写了一个具有以下定义的 scala 测试套件并且没有任何问题:

import org.scalatest._
import akka.testkit._
import akka.actor.ActorSystem
import org.scalatest.BeforeAndAfterAll
import org.scalatest._
import scala.concurrent.duration._
import akka.actor.Props 
import filters._

class ReaderSourceTest( _system: ActorSystem ) extends TestKit( _system ) with FunSuiteLike with BeforeAndAfterAll with ImplicitSender {
  import ReaderSource._

  //Must have a zero argument constructor
  def this() = this( ActorSystem( "ReaderSourceSuite" ) )

  override def afterAll = TestKit.shutdownActorSystem( system )

  test( "Reader should be alive as an actor" ) {
    val reader = system.actorOf( Props( classOf[ ReaderSource ], "dummy/file/name" ), "tstReaderA" )

    reader ! Ping( "Hello" )
    expectMsg( Pong( "Hello" ) )
  }
}

然后我创建了另一个测试文件来测试另一个演员,如下所示:

import socketclient._
import org.scalatest._
import akka.testkit._
import akka.actor.ActorSystem
import org.scalatest.BeforeAndAfterAll
import scala.concurrent.duration._
import akka.actor.Props
import org.scalatest.fixture.FunSuiteLike
import java.net.InetAddress
import org.kdawg.CommProtocol.CommMessages._
import org.kdawg.CommProtocol.CommMessages

class NetworkTest( _system: ActorSystem ) extends TestKit( _system ) with FunSuiteLike with BeforeAndAfterAll with ImplicitSender
{
  import NetworkTalker._
  def this() = this( ActorSystem( "NetworkTalkerTest") )

  override def afterAll = TestKit.shutdownActorSystem( system )
  test( "Can Send a Packet" )
  {
     val net = system.actorOf( NetworkTalker.props("10.1.0.5", 31000), "TestA" )  
     val pktBuilder = CommMessage.newBuilder
     pktBuilder.setType( MessageType.STATUS_REQUEST )
     pktBuilder.setStatusRequest( CommProtocol.CommandsProtos.StatusRequest.newBuilder() )
     val pkt = pktBuilder.build
     net ! PktSend(1, pkt)
     expectMsg( PktSent(1) ) 
  }
}

我在上述类的最后一行不断收到以下错误

Multiple markers at this line
    - type mismatch; found : org.kdawg.socketclient.NetworkTalker.PktSent required: NetworkTalkerTest.this.FixtureParam => 
     Any
    - type mismatch; found : org.kdawg.socketclient.NetworkTalker.PktSent required: NetworkTalkerTest.this.FixtureParam => 

谁能帮我解决这个问题?

【问题讨论】:

  • 您是否在 Eclipse 中编译时遇到此错误,或者在使用 scalac 或 sbt 的控制台上进行编译?
  • 您好 Roland,我在使用 Eclipse 编译时遇到错误。
  • 当我在 sbt.found 中运行“测试”时,我也看到了问题:org.kdawg.socketclient.NetworkTalker.PktSent [error] required: NetworkTalkerTest.this.FixtureParam => Any [error] expectMsg (PktSent(1))
  • 同时将测试移动到定义 ReaderSourceTest 的文件会导致问题消失。即,当我在同一个文件中编写两个测试时,它们会编译并运行。

标签: scala scalatest


【解决方案1】:

更改导入
import org.scalatest.fixture.FunSuiteLike

import org.scalatest.FunSuiteLike

工作

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多