在工作中,我们正在尝试简化使用Spring Remoting过度使用编码的应用程序。这就是它今天的工作方式:
(控制器)Spring MVC - > Spring Remoting - >休眠
一切都部署在一台机器上,不需要Spring Remoting(从不需要),并增加了代码维护的复杂性。我们想要它。
如何确保我们的更改后一切正常?今天我们有0%的代码覆盖率!我们考虑过为控制器创建集成测试,因此当我们删除Spring Remoting时,它们的行为应完全相同。我们考虑将Spring Test框架与DBUnit结合使用,以便在每个测试周期将Oracle升级到已知状态。
有没有人尝试过类似的解决方案?有什么缺点?你会建议更好的选择吗?
答案 0 :(得分:2)
它总是取决于您愿意承担的比例努力/利益。如果你非常勤奋和彻底,你可以得到几乎100%的代码覆盖率。但这也可能过度,特别是在维护这些测试时。但你的想法很好。在使用中型应用程序之前,我已经做了几次这样的事情。这是你应该做的:
那应该有用。如果您的应用程序是Web应用程序,那么我只能推荐selenium。它有一个很好的jenkins集成,您可以通过在浏览器中单击您的应用程序来创建数百个测试用例(记录这些点击并生成Java / Groovy /其他语言测试脚本)。
答案 1 :(得分:0)
在我们的Spring MVC / Hibernate(使用v3.4)Web应用程序中,我们使用Oracle数据库进行集成测试。
为了确保每次运行测试套件时我们的数据库都处于已知状态,我们在测试套件的persistence.xml中设置以下属性:
<property name="hibernate.hbm2ddl.auto" value="create"/>
这确保了每次基于我们类中的Hibernate注释运行测试时都会创建db模式。要使用已知数据集填充数据库,我们使用相应的SQL插入将名为 import.sql 的文件添加到我们的类路径中。如果您具有上述属性集,则Hibernate将在创建架构后在您的数据库上运行 import.sql 中的语句。