Quarkus集成测试因继承重复执行 求替代解决方案
Quarkus集成测试避免代码重复的替代方案
最优方案:抽象基类分离通用逻辑
- 抽一个无测试注解的抽象基类(比如
BaseFileValidationTest),把生成文件、验证文件存在、清理文件这些通用测试逻辑和前置/后置处理都放到这里,基类不要加@QuarkusMainTest或@QuarkusMainIntegrationTest。 Test.java继承这个基类,加上@QuarkusMainTest注解,正常执行基类的通用测试。IT.java同样继承基类,加上@QuarkusMainIntegrationTest注解,再写自己特有的测试方法。
这样两个测试类各自独立继承基类,不会互相触发对方的测试,既复用了代码,又解决了之前重复执行导致的文件冲突问题。
补充:确保测试环境隔离
不管用哪种方案,都要保证每个测试方法执行前后的环境干净,比如用@AfterEach做文件清理:
@AfterEach void cleanupTestFiles() { // 清理target下的测试生成文件 Files.deleteIfExists(Paths.get("target/generated-test-file.txt")); }
备选方案:抽成测试工具类
如果不想用继承,也可以把通用逻辑抽成静态工具类(比如FileTestHelper),里面写generateTestFile()、assertFileExists()、cleanupFiles()这些静态方法,然后Test.java和IT.java各自的测试方法直接调用工具类,同样能避免代码重复。
内容的提问来源于stack exchange,提问作者Mehmet Zorlu
相关产品推荐
相关产品推荐

