在我的 Spring-Maven--Hibernate-Mysql runnint on Tomcat web 应用程序中,我正在使用 2 个不同的 Junit 类别运行 2 种类型的 Junit 集成测试:
- LocalTests - 在进程中运行(不需要服务器),直接调用我的 Web 层方法(在本例中为球衣)。
- HttpTests - 模拟客户端并通过 http 请求调用我的 web 层,需要启动并运行 tomcat。
在我的每个测试类之上:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:testApplicationContext.xml" })
我的测试套件看起来像这样(这是 2 个之一,每个类别都有一个):
@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 实际上是空的,它只包含组件扫描:
<context:component-scan base-package="com.company.app" />
当我运行本地测试时,它一切正常,但是当我调用 mt HTTP 测试时,它崩溃了:
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。但我看不出这门课有什么特别之处,就是一颗普通的春豆。
提前致谢!