Scala 如何解决akka http测试和akka测试包中ActorSystem的冲突

Scala 如何解决akka http测试和akka测试包中ActorSystem的冲突,scala,akka,scalatest,akka-http,akka-testkit,Scala,Akka,Scalatest,Akka Http,Akka Testkit,我有一个测试类,其中我需要同时使用和 所以我就是这样做的 class MyTest extends TestKit(ActorSystem("testsys")) with ScalaFutures with ImplicitSender with AnyWordSpecLike with Matchers with BeforeAndAfterAll with ScalatestRouteTest { //tests here } class MyTest extends Tes

我有一个测试类,其中我需要同时使用和
所以我就是这样做的

class MyTest extends TestKit(ActorSystem("testsys")) with ScalaFutures with ImplicitSender with AnyWordSpecLike with Matchers with BeforeAndAfterAll with ScalatestRouteTest { 

//tests here
}
    class MyTest extends TestKit(ActorSystem("testsys")) with ScalaFutures with ImplicitSender with AnyWordSpecLike with Matchers with BeforeAndAfterAll with ScalatestRouteTest { 
override def createActorSystem(): ActorSystem = system
  override implicit val system: ActorSystem = createActorSystem

    //tests here
    }
但是我得到了一个编译时错误

implicit val system: akka.actor.ActorSystem (defined in class TestKit) and
[error]   implicit val system: akka.actor.ActorSystem (defined in trait RouteTest)
[error]   (note: this can be resolved by declaring an `override` in class MyTest.)
[error] class InsertEventTest extends TestKit(ActorSystem("testinterpret")) with ScalaFutures with ImplicitSender with AnyWordSpecLike with Matchers with BeforeAndAfterAll with ScalatestRouteTest {
[error]       ^

(note: this can be resolved by declaring an `override` in class InsertEventTest.)
所以我做了类似的事情

class MyTest extends TestKit(ActorSystem("testsys")) with ScalaFutures with ImplicitSender with AnyWordSpecLike with Matchers with BeforeAndAfterAll with ScalatestRouteTest { 

//tests here
}
    class MyTest extends TestKit(ActorSystem("testsys")) with ScalaFutures with ImplicitSender with AnyWordSpecLike with Matchers with BeforeAndAfterAll with ScalatestRouteTest { 
override def createActorSystem(): ActorSystem = system
  override implicit val system: ActorSystem = createActorSystem

    //tests here
    }
但是我得到了
NullPointerException

Java.lang.NullPointerException: system must not be null!
[info]   at java.base/java.util.Objects.requireNonNull(Objects.java:246)
[info]   at akka.actor.ExtensionId.apply(Extension.scala:78)
[info]   at akka.actor.ExtensionId.apply$(Extension.scala:77)
[info]   at akka.testkit.TestKitExtension$.apply(TestKitExtension.scala:14)
[info]   at akka.testkit.TestKitBase.$init$(TestKit.scala:161)
[info]   at akka.testkit.TestKit.<init>(TestKit.scala:928)
[info]   at MyTest.<init>(MyTest.scala:40)
[info]   at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[info]   at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[info]   at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
Java.lang.NullPointerException:系统不能为空!
[信息]位于java.base/java.util.Objects.requirennull(Objects.java:246)
[info]位于akka.actor.ExtensionId.apply(Extension.scala:78)
[info]位于akka.actor.ExtensionId.apply$(Extension.scala:77)
[信息]位于akka.testkit.TestKitExtension$.apply(TestKitExtension.scala:14)
[信息]位于akka.testkit.TestKitBase.$init$(testkit.scala:161)
[信息]在akka.testkit.testkit.(testkit.scala:928)
[信息]在MyTest。(MyTest.scala:40)
[info]位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
[info]位于java.base/jdk.internal.reflect.nativeconstructoraccessormpl.newInstance(nativeconstructoraccessormpl.java:62)
[info]位于java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

以下是和的文档

为什么您要对
TestKit
RouteTest
进行测试?这似乎是设计上的缺陷。这两种测试类型不是设计为在同一个类中共存的。你能把它们分成两个测试类吗?为什么你要同时测试
TestKit
RouteTest
?这似乎是设计上的缺陷。这两种测试类型不是设计为在同一个类中共存的。你能把它们分成两个测试类吗?