目前,我正在测试Message
具有 CRUD 操作的类(例如)。按照后面使用的方法,我想以准确的创建、读取、更新和删除顺序测试所有操作。
由于 JUnit 中测试用例的执行顺序取决于 JVM,因此我需要一些适当的方法来确保单元测试用例按给定的顺序执行。
到目前为止,我提出了以下策略:
使用@FixMethodOrder(MethodSorters.NAME_ASCENDING)
JUnit 4中执行在提升他们的名字的顺序方法。但是,这需要重命名测试用例,对我来说似乎不是最好的方法,好像将来需要添加更多测试用例,现有的测试用例可能需要重构。
Message
为每个测试用例使用不同的对象。但是,我需要在每个测试用例之前创建/初始化它并在每个测试用例之后删除它。这对我来说似乎与单元测试的概念背道而驰,为了测试update
我必须调用 create 和 delete,这不再使它成为单元测试用例。如果create
失败,这将导致read
,update
并且delete
测试也会失败,即使它们没有任何问题。
使用单个测试调用其他测试方法。对我来说,这似乎是比其他两个更合适的解决方案。如果create
失败,它应该停止运行其他三个测试等等。
那么有没有更好的方法来实现这个或任何替代方法来测试这样的模型?
目前正在使用 JUnit4 并考虑在没有解决方案满足我的情况时转移到 JUnit5。
您的选项 2 是最合适的选项,即使这让您感到惊讶:您应该尝试使您的测试相互独立,这样执行顺序就不是问题。
而且,这是一个正常的情况下,对于一些方法的测试a
,你需要调用其他方法b
,c
...测试设置,验证或拆卸过程中。您是对的,如果这些其他方法失败,那么方法测试a
也可能会失败 - 或者在应该失败的地方成功。
但是,如果您还对那些其他方法b
, c
, ... 进行了测试,这不是问题。例如,如果存在错误b
,则 的某些测试b
将失败,而 的某些其他测试将失败a
。从失败和成功测试的模式中,您必须推断出在哪里搜索失败测试的根本原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句