Java 测试设置例程设计模式

Java 测试设置例程设计模式,java,design-patterns,testing,junit,integration-testing,Java,Design Patterns,Testing,Junit,Integration Testing,我有一个扩展JUnitTestCase类的类。该测试有许多需要执行的“设置”例程。其中一个例程是将一些数据插入数据库,另一个例程是将JMS消息发送到EMS队列 目前,所有这些功能都在测试类中被重写的setUp方法中。然而,必须有更好的方法来做到这一点。我可能还想使用依赖注入来使测试类更通用 谢谢。我不认为依赖注入是(必要的)答案,除非您计划为您的测试用例编写测试。如果我是你,我会做最简单的事情,那就是将这个设置代码提取到类中。例如,一个JmsSetup类和一个DatabaseSetup类。让您的

我有一个扩展JUnitTestCase类的类。该测试有许多需要执行的“设置”例程。其中一个例程是将一些数据插入数据库,另一个例程是将JMS消息发送到EMS队列

目前,所有这些功能都在测试类中被重写的setUp方法中。然而,必须有更好的方法来做到这一点。我可能还想使用依赖注入来使测试类更通用


谢谢。

我不认为依赖注入是(必要的)答案,除非您计划为您的测试用例编写测试。如果我是你,我会做最简单的事情,那就是将这个设置代码提取到类中。例如,一个
JmsSetup
类和一个
DatabaseSetup
类。让您的安装方法创建并使用这些类


从那里开始,如果开始变得混乱,你可以做得更多,但在你到达之前不要跨越那座桥

没有什么能阻止您将这些设置代码段分解成单独的类,并使用您喜欢的任何其他OO原则。然后,您可以拥有一个简单的设置例程,该例程将所有任务委托给多个完成实际工作的类,因此可以在其他测试用例中重用

“必须有更好的方法来做到这一点”您当前的方法遇到了什么问题?当您使用
setUp()
在数据库中插入数据并将JMS消息排入队列时,您并不是真正的单元测试。。。在运行单元测试时,通常应该存根/模拟依赖于外部资源的代码部分。@tieTYT该方法的行数很长,不太可读/可维护。我只想把它拆分一下,避免过于复杂。@AndersR.Bystrup这是一个集成test@Nick很公平,这并不明显。我已经添加了集成测试标签。