我正在努力解决我的项目中出现的一个奇怪问题,该问题自从我们开始进行集成测试以来就出现了。发生的事情是我使用“jetty-maven-plugin”启动应用程序的一个实例,一旦它启动,“maven-failsafe-plugin”就开始运行集成测试。这么多设置和运行良好。
我现在要做的是:我想处理我的服务层,以便我可以设置一些固定装置供我的测试运行。到目前为止,我们的集成测试非常简单,我想把它提高一个档次并测试实际填写表格等等。为此,我需要能够设置一些固定装置,然后将它们移除,以便这些测试可重现。我们正在针对我们用于此目的的测试数据库运行。
从我所读到的,这并非不合理。尽管如此,当我实际运行测试时,我会收到一条非常奇怪的错误消息和堆栈跟踪。据我所知,Maven 在 Jetty 中启动应用程序没有问题。然后故障安全插件开始运行测试,一旦它达到第一个集成测试,它就开始实例化一个 Spring 实例和上下文。它正确地提取了它的属性和配置文件,但是当它尝试实际注入服务对象时,我看到了这个错误:
引起:org.springframework.beans.factory.BeanDefinitionSt oreException:从类路径资源[app-config.xml]解析XML文档时出现意外异常;嵌套异常是 org.springframework.context.annotation.Conflicting BeanDefinitionException: Annotation-specified bean name 'pesticideRoleRepositoryImpl' for bean class [dao.role.PesticideRoleRepositoryImpl] 与同名和类 [dao.role] 的现有不兼容 bean 定义冲突.PesticideRoleRepositoryImpl]
我会为你省去所有的堆栈跟踪,我可以随时提供它。;-)
我开始怀疑我是否做错了,所以我回去以几乎相同的方式设置一个测试项目。测试项目要简单得多,没有这个问题。当它运行集成测试时,服务对象会毫无问题地注入。有兴趣的可以看看我在 GitHub 上的测试项目。
我的问题是这个...
有没有人见过这个错误?会不会在某些情况下Spring会出现这种问题呢?
我很清楚,通过这种集成测试,我最终得到了两个使用完全相同配置的 Spring 容器。我认为这可能是问题,但测试项目的工作方式相同并且没有这个问题。我也很困扰,即使有两个具有相同名称和类的 bean,Spring 仍然认为它们是不兼容的。
谢谢,任何帮助将不胜感激!:-D