2

我有一个使用 SpringJUnitRunner 来测试控制器和过滤器的项目。当我正常运行测试时,一切运行正常。但是,当我使用 PIT 运行测试时,使用 SpringJUnitRunner 的每个测试都会出现以下异常:

java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99)
at org
11:53:55 PM PIT >> FINE : SLAVE : .springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:101)
at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:155)
at org.springfr
11:53:55 PM PIT >> FINE : SLAVE : amework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:100)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:319)
at org.springframework.test.context.j
11:53:55 PM PIT >> FINE : SLAVE : unit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:212)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
at org.junit.internal.runners.model.ReflectiveCallable.run
11:53:55 PM PIT >> FINE : SLAVE : (ReflectiveCallable.java:12)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232)
a
11:53:55 PM PIT >> FINE : SLAVE : t org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.ru
11:53:55 PM PIT >> FINE : SLAVE : nners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.springframework.test.context.junit4.statements.RunBeforeT
11:53:55 PM PIT >> FINE : SLAVE : estClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at
11:53:55 PM PIT >> FINE : SLAVE :  org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175)
at org.pitest.junit.adapter.CustomRunnerExecutor.run(CustomRunnerExecutor.java:42)
at org.pitest.junit.adapter.AdaptedJUnitTestUnit.execute(AdaptedJUni
11:53:55 PM PIT >> FINE : SLAVE : tTestUnit.java:85)
at org.pitest.coverage.execute.CoverageDecorator.execute(CoverageDecorator.java:50)
at org.pitest.execute.containers.UnContainer.submit(UnContainer.java:45)
at org.pitest.execute.Pitest$3.run(Pitest.java:182)
at java.lang.Thread.run(
11:53:55 PM PIT >> FINE : SLAVE : Thread.java:662)
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Only one AsyncAnnotationBeanPostProcessor may exist within the context.

应该注意的是,在这些相同的测试中,我们在使用 Emma 进行代码覆盖时也遇到了问题,因此不得不切换到 Jacoco。

SpringJUnitRunner 和 PIT 之间是否存在任何已知的不兼容性,或者我可以进行某种配置更改以使这两者能够很好地协同工作?

提前感谢您的帮助。

4

0 回答 0