私のSpring-Maven--Hibernate-Mysqlrunninton Tomcat Webアプリでは、2つの異なるJunitカテゴリを使用して2種類のJunit統合テストを実行しています。
- LocalTests-処理中(サーバーは不要)で実行され、Webレイヤーメソッド(この場合はジャージ)を直接呼び出します。
- HttpTests-クライアントをシミュレートし、httpリクエストを介してWebレイヤーを呼び出すには、Tomcatを起動して実行する必要があります。
私が持っている各テストクラスの上:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:testApplicationContext.xml" })
そして、私のテストスイートは次のようになります(これは2つのうちの1つで、カテゴリごとに1つあります)。
@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をマークしていることに気づきました。しかし、私はこのクラスについて特別なことは何も見ることができません。ただの普通の春の豆です。
前もって感謝します!