【发布时间】:2019-12-08 21:16:47
【问题描述】:
目前,我正在测试一个具有 CRUD 操作的类(例如 Message)。按照后面使用的方法,我想以精确的创建、读取、更新和删除顺序测试所有操作。
由于 JUnit 中测试用例的执行顺序依赖于 JVM,我需要一些适当的方法来确保单元测试用例按照给定的顺序执行。
到目前为止,我想出了以下策略:
在 JUnit 4 中使用
@FixMethodOrder(MethodSorters.NAME_ASCENDING)按名称升序执行方法。但是,这需要重命名测试用例,对我来说似乎不是最好的方法,因为将来需要添加更多测试用例,现有的测试用例可能需要重构。对每个测试用例使用不同的
Message对象。但是,我需要在每个测试用例之前创建/初始化它并删除它。这对我来说似乎违背了单元测试的概念,因为要测试update,我将不得不调用创建和删除,这不再使它成为一个单元测试用例。如果create失败,这将导致read、update和delete测试也失败,即使它们没有任何问题。使用单个测试调用其他测试方法。这对我来说似乎比其他两个更合适的解决方案。如果
create失败,它应该停止其他三个测试的运行等等。
那么有没有更好的方法来实现这个或任何替代方法来测试这样的模型?
目前正在使用 JUnit4,如果没有满足我的情况的解决方案,则考虑迁移到 JUnit5。
【问题讨论】:
-
考虑升级到 JUnit 5? junit.org/junit5/docs/current/user-guide/…
-
将其作为最后的手段,因为现有代码需要大量重构。
标签: java unit-testing junit