我正在考虑为我们的项目使用并行单元测试,并且想知道实际编写此类并行单元测试的最佳实践。
如果并行单元测试是指可以同时运行的测试,我能给你的最重要的建议是避免所谓的共享夹具。
xUnit Test Patterns一书描述了术语Fixture,它基本上可以描述为每个测试用例执行的整个上下文,包括持久性和瞬态数据。
共享夹具表示测试用例在运行时共享一些上下文。如果该上下文是可变的,则可能会发生竞争条件。
保持共享夹具不可变(所谓的不可变共享夹具)将允许您并行运行测试,但更好的是,所谓的新鲜夹具(其中每个测试用例都有自己的夹具)根据定义是线程安全的,因为只有测试用例本身才能访问 Fixture。
共享夹具的示例包括使用共享数据库的任何类型的测试,但也包括在被测系统 (SUT) 或测试本身中具有静态内存状态的测试,因此您需要避免这种情况。
您还应该记住,如果您的 SUT 访问共享(静态)数据,则该访问本身必须是线程安全的。
无论您使用哪种编程语言框架,在编写单元测试时遵循最佳实践都是一个好方法。 以下是我从下面引用的来源中获得的一些最佳实践的列表:
因此,无论人们是否同意其中一些最佳实践,他们都会提高代码的整体质量。 有关单元测试最佳实践
的文章对这些实践进行了更多描述