在我正在开发的一个项目中,使用Spring,我看到了一些令人难以置信的东西。显然,有些单元测试需要bean才能工作,而这些bean是从XML文件创建的,包含以下内容:
<bean class="...ListDTO">
<constructor-arg>
<map>
<entry key="use1key">
<value>use1value</value>
</entry>
<entry key="use2key">
<value>use2value</value>
</entry>
</map>
</constructor-arg>
<constructor-arg>
<map>
<entry key="nature1key">
<value>nature1value</value>
</entry>
<entry key="nature2key">
<value>nature2value</value>
</entry>
</map>
</constructor-arg>
<constructor-arg>
<value>false</value>
</constructor-arg>
</bean>
发生了什么?类的构造函数... ListDTO已更改,因此显然无法从此(非常详细的恕我直言)XML中创建bean。
有人可以解释一下为什么将这样的东西放在XML而不是Java代码中是一种好的做法(它真的吗?)?如果是在Java代码中,只要... ListDTO改变了单元测试就会拒绝编译(即使实例化那个bean的单元测试部分没有被执行[无论出于何种原因])。
奖金问题:除了运行所有单元测试之外,有没有办法在项目中轻松找到所有这些破碎的“XML中的bean”,看看哪些失败然后冲洗并重复?
对我来说,似乎是一个非常严重的问题,你可以改变一个构造函数,并且IDE会表现得好像一切都很好:这有什么理由呢? (*)
答案 0 :(得分:6)
这背后的想法是在中央XML配置文件中保留环境(开发,测试,生产)之间的不同,并且通过使用不同的配置文件,您可以切换环境。
但是,使用bean配置来定义复杂的测试数据结构绝对不是一个好习惯。有人可能会在新注入依赖注入的同时做到这一点,只是因为它是可能的。
答案 1 :(得分:1)
奖金问题:除了运行所有单元测试之外,有没有办法在项目中轻松找到所有这些破碎的“XML中的bean”,看看哪些失败然后冲洗并重复?
Spring Tool Suite或Eclipse的Spring插件可以检查spring配置文件是否正确(具有所有构造函数参数,并且不使用未知的setter)。
答案 2 :(得分:0)
我认为在使用Spring时应该使用SpringSource工具。您可以单独下载或作为Eclipse插件下载它: