Scalatest运行程序导致VerifyError:无法从最终类继承

时间:2018-08-04 20:22:16

标签: scala scalatest

我正在尝试使用ScalaTest Runner在jar中运行所有测试(所有测试都扩展了FlatSpec),但收到一条有关VerifyError的消息。但是,我可以单独运行测试。

jar是使用sbt test:assembly编译的。我试图在没有sbt的另一个环境中运行测试。这些测试位于com / tfs / test路径中的jar中,如下所示:

samik@samik-lap:~/git/proj$ jar tf test-2018.2.jar | grep MyTest
com/tfs/test/MyTest$$anonfun$1$$anonfun$apply$mcV$sp$1.class
com/tfs/test/MyTest$$anonfun$4.class
com/tfs/test/MyTest$$anonfun$5.class
com/tfs/test/MyTest$$typecreator4$1.class
com/tfs/test/MyTest$$typecreator5$1.class
com/tfs/test/MyTest$$typecreator9$1.class
com/tfs/test/MyTest.class

以下命令可以运行特定的测试:

samik@samik-lap:~/git/proj$ scala -J-Xmx2g -cp "scalatest_2.11-3.0.5.jar:scalactic_2.11-3.0.5.jar:test-2018.2.jar" org.scalatest.run com.tfs.test.MyTest
0    [ScalaTest-main] INFO  com.tfs.test.MyTest  - Starting MyTest test application
Start Time: 0 sec
...

但是,当我使用Runner运行所有测试时(在同一路径下的jar中有约7个相似的测试),这是行不通的。

samik@samik-lap:~/git/proj$ scala -J-Xmx2g -cp "scalatest_2.11-3.0.5.jar:scalactic_2.11-3.0.5.jar" org.scalatest.tools.Runner -o -R test-2018.2.jar
Discovery starting.
*** RUN ABORTED ***
java.lang.VerifyError: Cannot inherit from final class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

如何让所有测试通过Runner运行?我如何知道内部正在发生什么以及问题在哪里?感谢您的指导。

0 个答案:

没有答案