首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Spring [ERROR]的Junit在允许TestExecutionListener时捕获异常

使用Spring [ERROR]的Junit在允许TestExecutionListener时捕获异常
EN

Stack Overflow用户
提问于 2012-07-22 15:38:35
回答 3查看 62K关注 0票数 7

在Tomcat应用程序上的Spring-Hibernate-Mysql中,我使用两个不同的Junit类别运行两种类型的Junit集成测试:

  1. LocalTests --在进程中运行(不需要服务器),直接调用我的web层方法(在本例中为jersey)。
  2. HttpTests -模拟客户端并通过http请求调用我的web层,需要启动和运行tomcat .

在我的每一门测试课程之上:

代码语言:javascript
运行
复制
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:testApplicationContext.xml" })

我的测试套件看起来是这样的(这是两个测试套件中的一个,每个类别我都有一个):

代码语言:javascript
运行
复制
@RunWith(Categories.class)
@IncludeCategory(HttpTest.class)
@SuiteClasses({ ...All My Test Classes... })
public class HttpSuiteITCase {

    // Excluded: NotificationTests, ImageHttpTests

    /**
     * Run once before any of the test methods.
     */
    @BeforeClass
    public static void setTestsConfigurations() {
    TestConfiguration.setup(false);
    }

我的testApplicationContext实际上是空的,它只包含组件扫描:

代码语言:javascript
运行
复制
<context:component-scan base-package="com.company.app" />

当我运行本地测试时,一切都很顺利,但是当我调用mt测试时,它崩溃了:

代码语言:javascript
运行
复制
2012-07-22 17:56:13 DefaultListableBeanFactory [INFO] Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@2598a35d: defining beans [httpBrandManagerTestsProxy,httpClubTestsProxy,<HERE THERE'S A BUNCH OF SPRING BEANS>,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,contextApplicationContextProvider,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy
2012-07-22 17:56:13 TestContextManager [ERROR] Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@29565e9d] to prepare test instance [integrationTests.http.tests.UserLoginDataHttpTests@480d41f3]
java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288)

我尝试了大量的东西,但什么也没用:(我的testApplicationContext在test/resources文件夹下)。

我注意到异常标记了一个特定的类: UserLoginDataHttpTests。但我看不出这门课有什么特别之处,只是一个普通的春豆。

提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-22 19:43:40

这个问题发生在Spring上下文在我的一个侦听器之前加载,这个侦听器是在web.xml中定义的。Spring正在初始化一些bean,这些bean使用使用我自己的侦听器初始化的非spring类。为了解决这个问题,我应该确保我的侦听器先运行。

票数 6
EN

Stack Overflow用户

发布于 2020-09-30 10:54:07

除了以上所述的答案之外。您还应该查找“由”来查看是否存在任何依赖解决问题。例如,如果被测试的类是MyService.java,并且它使用依赖项MyRepository.java。然后,您应该确保所有这些依赖项都是在测试类中模拟或自动处理的。

票数 1
EN

Stack Overflow用户

发布于 2019-09-06 10:20:27

对于我来说,添加VM选项,工作了

将其添加到该测试用例的VM选项中:-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11601612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档