加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用Maven的JunitTest时的InitilizationError

发布时间:2020-12-15 02:23:26 所属栏目:Java 来源:网络整理
导读:我正在尝试使用Maven3进行一些Junit-Test,但在执行具有JUnit-Annotations的测试时,总是得到一些initilizationError(这里有一些testclass)(所有其他测试运行正常).当我在 Eclipse中运行测试时,一切都很好.但是用maven运行测试会破坏. 我的Testproject打包为ec
我正在尝试使用Maven3进行一些Junit-Test,但在执行具有JUnit-Annotations的测试时,总是得到一些initilizationError(这里有一些testclass)(所有其他测试运行正常).当我在 Eclipse中运行测试时,一切都很好.但是用maven运行测试会破坏.
我的Testproject打包为eclipse-plugin.
我使用maven-osgi-test-plugin.

我的测试类注释为:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
@TransactionConfiguration
public class ArtifactManagerTest extends
    AbstractTransactionalJUnit4SpringContextTests {...

对于使用@ContextConfiguration注释的每个测试类,都有classname-test.xml文件.在这个配置文件中,我通过“classpath:”导入applicationContext-Test.xml.

我的test-plugin的pom.xml看起来像:

<groupId>foo.bar</groupId>
<artifactId>company.xyz</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>eclipse-test-plugin</packaging>

<build>
 <plugins>
  <plugin>
   <groupId>org.sonatype.tycho</groupId>
   <artifactId>maven-osgi-test-plugin</artifactId>
   <configuration>
    <useUIHarness>true</useUIHarness>
    <testSuite>company.xyz.test</testSuite>
    <testClass>company.xyz.AllTests</testClass>
    <argLine>-Xmx512m</argLine>
    <bundleStartLevel>
     <bundle>
      <id>org.eclipse.equinox.ds</id>
      <level>1</level>
      <autoStart>true</autoStart>
     </bundle>
    </bundleStartLevel>
   </configuration>
   <inherited>true</inherited>
  </plugin>
 </plugins>
</build>

失败输出如下:

initializationError(company.xyz.ArtifactManagerTest)  Time elapsed: 0 sec  (ParentRunner.java:66)
        at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:59)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.(SpringJUnit4ClassRunner.java:104)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)
        at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
        at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java
:29)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
        at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:93)
        at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84)
        at org.junit.runners.Suite.(Suite.java:101)
        at org.junit.runners.Suite.(Suite.java:67)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:35)
        at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
        at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java
:29)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
        at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:93)
        at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84)
        at org.junit.runners.Suite.(Suite.java:101)
        at org.junit.runners.Suite.(Suite.java:67)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:35)
        at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
        at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java
:29)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
        at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
        at org.apache.maven.surefire.junit4.JUnit4TestSet.(JUnit4TestSet.java:45)
        at org.apache.maven.surefire.junit4.JUnit4DirectoryTestSuite.createTestSet(JUnit4DirectoryTestSuite.java:56)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.locateTestSets(AbstractDirectoryTestSuite.java:96)
        at org.apache.maven.surefire.Surefire.createSuiteFromDefinition(Surefire.java:209)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:156)
        at org.codehaus.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:75)
        at org.codehaus.tycho.surefire.osgibooter.AbstractUITestApplication$1.run(AbstractUITestApplication.java:25)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
        at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
        at org.codehaus.tycho.surefire.osgibooter.UITestApplication.runApplication(UITestApplication.java:21)
        at org.codehaus.tycho.surefire.osgibooter.AbstractUITestApplication.run(AbstractUITestApplication.java:109)
        at org.codehaus.tycho.surefire.osgibooter.UITestApplication.start(UITestApplication.java:27)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        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:619)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1383)

在surefire-reports中,我看到java.class.path设置为我的本地maven存储库为’org.eclipse.equinox.launcher-1.1.0.v20100507.jar’

看起来类路径设置不正确,所以maven找不到applicationContext.xml?但是如何做到这一点呢?

解决方法

请确保@BeforeClass和@AfterClass的方法是“public static void”,并且测试用例类ArtifactManagerTest中没有参数.

编辑:验证@BeforeClass和@AfterClass失败时抛出InitializationError,因此甚至不执行@BeforeClass.

如果可能,请使用以下代码获取失败信息:

Result r=new JUnitCore().run(ArtifactManagerTest.class); 
for(Failure f:r.getFailures()){ 
    System.out.println(f); 
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读