eclipse 插件单元测试遇到一些问题。
方法参考下面的文章:
http://eclipsesource.com/blogs/2010/09/09/an-almost-perfect-test-suite/
有多个插件A,B,C,每个插件中有一些单元测试,然后有另外一个插件D遍历前面说的所有插件,如果有测试用例就运行。
public class AngelTestSuite extends TestSuite {
public static Test suite() {
BundleTestCollector testCollector = new BundleTestCollector();
TestSuite suite = new TestSuite("All Tests");
testCollector.collectTests(suite, "com.xx", "com.xx.", "*Test");
return suite;
}
}
在A,B,C插件中运行单元测试没有问题,是否用了jmockit都通过。
在D插件中运行单元测试,所有用了jmockit的测试代码都fail,报下面的错误(-javaagent已经设置,否则前面A,B,C中运行也会报错):
java.lang.ExceptionInInitializerError
at com.xx.xxTest.testXX(MileageHostOperatorTest.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.java:58)
at org.eclipse.pde.internal.junit.runtime.CoreTestApplication.run(CoreTestApplication.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethod(EclipseAppContainer.java:572)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:171)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
Caused by: java.lang.IllegalStateException: JMockit has not been initialized. Check that your Java 5 VM has been started with the -javaagent:D:\workspace\com.xx.lib.test\jmockit.jar command line option.
at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:24)
at mockit.internal.startup.Startup.verifyInitialization(Startup.java:84)
at mockit.Invocations.<clinit>(Invocations.java:23)
... 40 more
问题补充:补充一下,ABC中成功的是运行JUnit Test,D中是运行JUnit Plug-in Test
问题补充:ABC中运行JUnit Plug-in Test,报如下错误:
java.lang.Exception: No runnable methods
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:33)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.java:58)
at org.eclipse.pde.internal.junit.runtime.CoreTestApplication.run(CoreTestApplication.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethod(EclipseAppContainer.java:572)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:171)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
问题补充:针对No runnable methods,找到一个bug说明,但是没看出来是怎么改的。
https://bugs.eclipse.org/bugs/show_bug.cgi?id=195674
相关推荐
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-platform-launcher-1.5.1.jar,junit-...
Files contained in junit4-4.8.2.jar: LICENSE.txt META-INF/MANIFEST.MF junit.extensions.ActiveTestSuite.class junit.extensions.RepeatedTest.class junit.extensions.TestDecorator.class junit.extensions...
junit3.8.2junit3.8.2junit3.8.2junit3.8.2junit3.8.2
本文将详细介绍如何使用 Selenium+Eclipse+Junit+TestNG 搭建自动化测试框架,包括安装 JDK、Eclipse、Selenium IDE、Selenium RC、IEDriverServer、Selenium Client Drivers、Firefox、Firebug、Xpath checker 和 ...
Java开发过程中,常常需要引用各种库来增强功能或者简化代码,这个压缩包组合提供了一些Java开发者常用的工具类库。下面将分别介绍其中包含的每个jar文件及其对应的Java知识点。 1. **c3p0-0.9.1.2.bin**: 这是c3p0...
5. **模拟系统类和库**:JMockit能模拟像`java.lang.System`这样的系统类,甚至能模拟JVM级别的行为,这对于测试底层库或系统调用非常有用。 6. **兼容性**:JMockit兼容JUnit、TestNG等主流的测试框架,可以无缝...
基于Structs+Hibernate+Spring+mahout+bootstrap+junit+tomacat+mysql 实现的网上书店前后台系统, 毕业设计。.zip基于Structs+Hibernate+Spring+mahout+bootstrap+junit+tomacat+mysql 实现的网上书店前后台系统, ...
JUnit是Java编程语言中最常用的单元测试框架之一,主要用于软件开发中的测试驱动开发(TDD)或行为驱动开发(BDD)。3.8.2是JUnit的一个版本,它在JUnit早期版本的基础上提供了一些增强的功能和改进。这个"junit3.8.2....
selenium+java+junit的使用,可以提供给正在学习软件测试的学弟学妹们借鉴和参考!
《JUnit 3.8.2:经典单元测试框架的基石》 JUnit,作为一个广泛使用的Java编程语言的单元测试框架,自其诞生以来就一直是开发者进行软件质量保证的重要工具。这里我们关注的是JUnit的一个特定版本——3.8.2。这个...
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中为最成功的一个。
标题中的"hamcrest-core-1.3+junit-4.12.zip"是一个包含测试框架组件的压缩包,其中包含了两个关键的Java库:hamcrest-core-1.3.jar和junit-4.12.jar。这两个库在进行Java单元测试时发挥着至关重要的作用。 1. **...
【标题】"selenium+java+junit+maven" 指的是一个基于这些技术的Java自动化测试框架。这个框架主要用于Web应用的自动化测试,确保软件的功能性和稳定性。 **Selenium** 是一个广泛使用的Web浏览器自动化工具,支持...
《深入理解JUnit 5:Java单元测试框架的革新》 JUnit 5,作为Java开发者最常用的单元测试框架,是JUnit系列的最新版本,为Java测试带来了显著的改进和创新。这个名为"junit5.jar"的文件正是JUnit 5的核心库,它包含...
JUnit5是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了强大的测试能力,确保代码的质量和稳定性。本篇文章将详细介绍JUnit5的核心组件、主要功能以及如何在项目中使用。 JUnit5由三个主要模块组成...
com.springsource.org.junit-4.7.0.jar 需要的下载啊
在Java开发过程中,Ant和JUnit是两个非常重要的工具。Ant是一个构建工具,它允许开发者自动化构建、测试和部署Java项目,而JUnit则是一个单元测试框架,用于编写和运行可重复的测试用例,确保代码质量。这个“ant+...
《Junit 4.12 和 Hamcrest Core 1.3:Java单元测试的重要伙伴》 在Java开发中,单元测试是确保代码质量的关键环节,它可以帮助开发者在早期发现并修复错误,避免了后期集成阶段可能出现的问题。在这里,我们要探讨...
`hamcrest-1.3+junit-4.7+junit-4.8.2` 这个压缩包文件包含了两个重要的单元测试框架:Hamcrest 1.3 和 JUnit 的多个版本,分别是 4.7 和 4.8.2。让我们深入了解一下这两个库以及它们如何协同工作以支持高效的单元...
JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这里我们关注的是`junit-4.12.jar`版本,这是一个重要的里程碑,因为它带来了许多改进和新特性。让我们深入...