什么需要初始化春天启动集成测试运行独立
问题描述:
这是我的基础测试类的样子 -什么需要初始化春天启动集成测试运行独立
@SpringApplicationConfiguration(classes = ServiceApplication.class)
@WebAppConfiguration
@IntegrationTest("server.port:8084")
public class BaseTestStartService {
//TODO:add basic service test
}
不知道什么是在这个基类中实现?什么是正确的过程?该基类的测试类实现 -
@RunWith(SpringJUnit4ClassRunner.class)
public class TestClass extends BaseTestAPIService{
//add assertions
}
我想实现正确的过程,以便寻找一些建议。
答
也许你可以更深入地了解你的服务是什么以及你想测试什么,例如, REST使用RestTemplate或对组件bean的直接方法调用进行调用。
无论哪种方式,一些技巧可能是有趣:
- 您可能需要采取随机端口分配的优势,通过指定
server.port:0
,最终自动装配一个int与@Value("${local.server.port}")
- 否则测试运行可能重用上下文并尝试在运行第二个实现时在同一端口上再次启动该服务;
- 你可以使用
@Before
和@After
anotations在基类上设置一套通用的灯具; - 基类应该是抽象的;
- 主要的SpringApplicationConfiguration类通常被称为“SomethingTestedHost”。
无论哪种方式,一种常见的良好做法是保持您的服务模块化,并根据@Test
注释方法有一个不同的测试用例。 从您的配置来看,您似乎可能需要为您构建测试的大型服务。如果您正在使用测试驱动开发并计划稍后分离测试服务,这可能是一种很好的做法。