我有一个非常长的集成测试,模拟一个涉及与几个Java servlet的许多不同交互的顺序过程。 servlet的行为取决于请求中发布的参数的值,因此我想测试每个排列以确保我的servlet按预期运行。
目前,我的集成测试位于一个名为“testServletFunctionality()”的长函数中,如下所示:
//Configure a mock request
//Post request to servlet X
//Check database for expected changes
//Re-configure mock request
//Re-post request to servlet X
//Check database for expected changes
//Re-configure mock request
//Post request to servlet Y
//Check database for expected changes
...
并且每个configure / post / check步骤都有大约20行代码,所以函数很长。
分解或组织像这样的长时间,连续,重复的集成测试的正确方法是什么?
答案 0 :(得分:0)
集成测试(IT)的主要问题通常是设置非常昂贵。测试通常不应该依赖于彼此以及它们的执行顺序,但对于IT,如果不运行测试#1(登录),测试#2将始终失败。
悲伤。
解决方案是将这些测试视为生产代码:将长方法拆分为几个较小的方法,构建执行某些操作的辅助对象,以便在测试中执行此操作:
@Test
public void someComplexText() throws Exception {
new LoginHelper().loginAsAdmin();
....
}
或将此代码移动到基础测试类中:
@Test
public void someComplexText() throws Exception {
loginHelper().loginAsAdmin();
....
}