【发布时间】:2019-03-07 20:15:13
【问题描述】:
我想在 play.test.TestServer 上运行我的集成测试。所以所有测试都只是向 TestServer 发送 Http 请求并断言 Http 结果。
但是,如果我在 @BeforeClass 方法测试套件中启动 TestServer,运行所有集成测试需要花费大量时间,因为我需要为每个套件启动和停止播放服务器。
所以我决定使用 sbt 的 Tests.Setup 方法启动测试服务器
Tests.Setup(loader=>
loader.loadClass("it.PlayTestRunner")
.getMethod("startup")
.invoke(null)
)
我可以调用启动方法,但它会抛出异常
Caused by: java.lang.ClassNotFoundException: tyrex.naming.MemoryContextFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:672)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.init(InitialContext.java:244)
at javax.naming.InitialContext.<init>(InitialContext.java:216)
at play.api.libs.JNDI$.initialContext$lzycompute(JNDI.scala:40)
at play.api.libs.JNDI$.initialContext(JNDI.scala:22)
at play.api.db.HikariCPConnectionPool$$anonfun$1$$anonfun$apply$2.apply(HikariCPModule.scala:63)
我猜这个问题与类加载 JNDI 对象有关。
你知道解决这个问题的任何想法吗?
【问题讨论】:
-
请添加您的答案并接受它,因为它解决了您的问题。目前您的问题似乎没有答案。
-
抱歉,搞定了。谢谢!
标签: playframework sbt integration-testing