我有我设置使用Maven多模块Spring项目:不在classpath中的依赖关系的测试资源?
my-root (pom)
- my-logic
- my-webapp (depending on my-logic)
- my-consoleapp (depending on my-logic)
我的测试类从AbstractTransactionalJUnit4SpringContextTests
继承和使用@ContextCofiguration
用于设置ApplicationContext
。
E.g.弹簧控制器的测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath:applicationContext-logic-test.xml",
"classpath:applicationContext-web-test.xml"})
public class ControllerTest extends AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private ApplicationContext applicationContext;
...
}
正如您所见,每个模块都有一个配置XML。我有单独的测试配置,驻留在每个模块的测试/资源中(并且另外具有后缀“-test”)。这一切工作(类编译,运行和JUnit测试成功)如果我在Eclipse中运行JUnit测试。
现在我的问题:使用Maven运行测试将无法正常工作!(例如使用“Run As”>“Maven install”my-root
(我使用m2eclipse))。具体来说,它会抛出以下异常:
java.io.FileNotFoundException:类路径资源[的applicationContext-逻辑的test.xml]不能打开,因为它不exist`
似乎Maven不会将my-logic/src/test/resources
中的文件添加到运行单元测试my-webapp
时设置的类路径中。
我该如何解决这个问题?
非常感谢这个优秀的答案!我用这个解决方案,它的工作原理。现在您已经解释了这一点,对我来说很明显,所有(外部)依赖项的测试资源都不包含在classpath中。他们应该如何?但不知何故,如果我自己模块的资源被包括在内,那将会很好。即使我不知道这究竟会发生什么,现在我想到了;) – apropoz 2010-08-26 10:07:15
@apropoz不客气。 Maven的想法是模块是自包含的:您可以在没有兄弟的情况下签出单个模块并构建它。任何涉及相对路径的事情都会破坏这一点,这是不可取的。 – 2010-08-26 10:34:00