使用不是 Java EE 应用程序的服务器端 Java 应用程序编写功能测试
我的公司有一个基于 Java 的批处理应用程序,该应用程序未在 Java EE 中实现,它嵌入了 jetty 来处理一些 Web 服务调用。
到目前为止,这些端点都没有进行任何功能测试(使用 htmlunit 之类的东西),这显然是一件坏事。
我受命去做这件事。我对成功的定义是让它的行为尽可能像 grails 和它的功能测试插件,或者传统的 Java EE 将使用 maven 的故障安全插件。
该应用程序有一个 main() 方法。在内部,一切(如数据源、作业如何组合等)都是在 Spring 中配置的。
有人对策略有什么建议吗?请随时提示我提供更多信息。
My company has a java-based batch application that's not implemented in Java EE which embeds jetty to handle some web service calls.
Untill now, none of these endpoints had any functional tests(using something like htmlunit), which is clearly a bad thing.
I've been tasked to do this. My definition of success is to have it behave as much as possible like grails and it's functional test plugin or a traditional Java EE would be using maven's failsafe plugin.
The app has a main() method. Internally, everything(like datasources, how jobs fit together, etc) is configured in Spring.
Does anyone have any suggestions on a strategy? Feel free to prompt me for more information.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
查看 Spring 的 TestContext 框架。它允许您创建特定于测试的应用程序上下文文件,并具有简洁的 与 JUnit 4 集成,支持数据库功能的 JDBC 事务。基本上,Spring 创建一个新事务,运行您的测试方法,然后在您有机会断言数据库更改正确后回滚事务。您可以使用未修改的 DAO 代码针对实时数据库运行集成测试,而无需事后清理任何混乱。
Look at Spring's TestContext framework. It allows you to create test-specific application context files and has neat integration with JUnit 4 to support JDBC transactions for your database functionality. Basically Spring creates a new transaction, runs your test method, and then rolls the transaction back after you've had a chance to assert that the database changes are correct. You can run integration tests with unmodified DAO code against a live database without any mess to clean up afterwards.
我最终使用了泽西测试(参见此 SO 条目)。
I ended up using Jersey Test(see this SO entry).