编写并行单元测试的最佳实践

问题描述 投票:0回答:3

我正在考虑为我们的项目使用并行单元测试,并且想知道实际编写此类并行单元测试的最佳实践。

unit-testing parallel-processing
3个回答
5
投票

如果并行单元测试是指可以同时运行的测试,我能给你的最重要的建议是避免所谓的共享夹具。

xUnit Test Patterns一书描述了术语Fixture,它基本上可以描述为每个测试用例执行的整个上下文,包括持久性和瞬态数据

共享夹具表示测试用例在运行时共享一些上下文。如果该上下文是可变的,则可能会发生竞争条件。

保持共享夹具不可变(所谓的不可变共享夹具)将允许您并行运行测试,但更好的是,所谓的新鲜夹具(其中每个测试用例都有自己的夹具)根据定义是线程安全的,因为只有测试用例本身才能访问 Fixture。

共享夹具的示例包括使用共享数据库的任何类型的测试,但也包括在被测系统 (SUT) 或测试本身中具有静态内存状态的测试,因此您需要避免这种情况。

您还应该记住,如果您的 SUT 访问共享(静态)数据,则该访问本身必须是线程安全的。


4
投票

一些有趣的链接:

组织单元测试

并行运行单元测试

这个 Stackoverflow 问题中有一些有趣的答案。希望这会有所帮助。


0
投票

无论您使用哪种编程语言框架,在编写单元测试时遵循最佳实践都是一个好方法。 以下是我从下面引用的来源中获得的一些最佳实践的列表:

  • 编写值得信赖的单元测试:你的单元测试应该是你信任的东西,当你的代码良好时它应该成功,当你的代码有问题时它应该失败。
  • 编写描述性单元测试:如果同事正在阅读您的测试用例,他/她应该无需花费太多精力就能理解它在做什么。
  • 安排行动断言:始终组织您的测试结构,准备数据(安排),执行被测代码(行动)并验证(断言)。
  • 避免多重行为
  • 一次测试一件事
  • 编写独立的单元测试:您的测试用例不应依赖于任何外部资源,例如文件系统或其他单元测试。
  • 编写快速单元测试:尽最大努力使您的测试快速,这将鼓励其他人运行您的测试。
  • 避免单元测试中的逻辑
  • 使用公共方法验证私有方法:过去,我们习惯使用AOP来测试私有方法,实际上有一种趋势是使用它们的公共方法来测试这些私有方法。只要你有良好的覆盖范围。
  • 尽可能覆盖
  • 避免魔法值:不要让人们迷惑购买没有上下文的引入值(注释、变量/常量名称等)。
  • 测试边缘情况:考虑代码可能不按预期运行的情况(最大值和最小值、特殊值等)。
  • 学习你的测试框架:总是一件好事,测试框架可以提供比你想象的更多的东西!

因此,无论人们是否同意其中一些最佳实践,他们都会提高代码的整体质量。 有关单元测试最佳实践

的文章对这些实践进行了更多描述
© www.soinside.com 2019 - 2024. All rights reserved.