次のように、Spring (3.1.3) を使用していくつかの JUnit (4.10) テストを構成しています。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=TestConfig.class)
public class MyTest {...}
これらは Eclipse 内からは正常に実行されますが、コマンドラインから Maven (surefire) を使用すると、TestConfig クラスを見つけることができません。私はxmlベースの構成を使用して同じ構成を使用していましたが、どちらの場合もうまく機能しました。TestConfig.class が test-classes の予想される場所にあることを確認しました。また、コンテキストローダーがテストクラスを検索しなかった場合に備えて、クラスに移動しようとしましたが、うまくいきませんでした。何か案は?
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157)
...
Caused by: java.io.FileNotFoundException: class path resource [com/test/TestConfig.class] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157)
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:49)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
at org.springframework.context.annotation.ConfigurationClassParser.findAllAnnotationAttributes(ConfigurationClassParser.java:282)
at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:225)
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:148)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:134)
アップデート
私は<forkMode>never</forkMode>
maven-surefire-pluginのために持っていました。設定<forkMode>once</forkMode>
(デフォルト)により、問題は解消されました。