Galilo 和 MbUnit 发布 3.06 版

  • Al Tenhundfeld
  • 王瑜珩

2009 年 4 月 2 日

话题:.NET语言 & 开发

Gallio 和 MbUnit 发布了 3.0.6 版Gallio是一个开放的、可扩展的、(测试框架)中立的自动化测试平台,它提供了.NET 上的公共模型、运行时和工具(例如测试运行工具),任何测试框架都可以使用这个平台。

MbUnit 是.NET 上的一个很受欢迎的高效测试框架,3.0.6 版包括以下改进:

  • 并行运行
  • MbUnit3.0.6 可以充分利用你的多核处理器。只要给测试用例(test)加上 [Parallelizable] 属性,这个测试用例就可以和同一个测试套件(fixture)中其他拥有该属性的测试用例并行运行。测试套件也可以被标记为 [Parallelizable],这样测试套件也可以和其他拥有该属性的测试套件并行运行。需要注意的是,如果你希望一个测试套件中的所有测试用例都能并行运行,仍然需要手动为每个测试用例添加 [Paralleizable] 属性(我们可能会跟据用户的反馈,在晚些时候添加测试套件或程序集级别的属性)。特别需要注意的是,仅仅为测试用例或测试套件添加 [Parallelizable] 属性,并不意味着它一定会和其他的测试并行运行。基于效率的考虑,我们限制了同时运行测试的线程数量,你可以通过配置并发度来修改这个数量。如果你想让一个测试用例同时运行多个实例,可以考虑使用 [ThreadedRepeat] 属性。

  • 并发度
  • 并发度控制 MbUnit 最多能同时运行多少个测试。默认情况下,这个数值与你的 CPU 个数相同,最小值是 2。

  • 默认超时时间(不兼容的修改)
  • 在 MbUnit2 和 MbUnit3 的早期版本中,每个测试套件的默认超时时间是 10 分钟,这个是不能更改的。现在我们可以为每个单独的测试用例配置超时时间,默认值还是 10 分钟。

  • Contact 验证器(不兼容的修改)
  • Contract 验证器可以简化对 contract 实现的正确性的测试。例如,它可以帮你测试自定义的异常类,验证自定义类型的 Equals 和 GetHashCode 方法是否一致,以及检查 IList 的不变性。这个特性最初出现在 MbUnit3.0.4,并在 3.0.5 中得到了加强,Yann Trévin 做了很多工作使它在 3.0.6 中更完善。我们现在使用一个只读字段来标示 contract 验证器,从而取代了过去使用的自定义属性。这使得代码更具有表达力,但是你必须要升级旧的测试代码。更详细的信息参考:Contract Verifiers Chapter in Gallio Book

  • Xml 数据源
  • CSV 数据源已经非常流行了。你可能还不知道,在 CSV 的数据行中可以关联元数据,只要添加一列并在该列的第一行写上 [ExpectedException]、[Description] 或者其他的元数据就行了。在 3.0.6 中我们还支持 XML 数据源。

Gallio 也包含了一些改进,比较明显的是:

  • One-Click 调试
  • 只要点一下“Debug”按钮,Icarus 就可以在调试器中运行测试。它会将 Visual Studio 的调试器附在测试进程上,然后运行测试。

  • 自动加载和自动运行
  • 当测试被重新编译后,Icarus 能够自动重新加载和运行所有已加载的测试。在 3.0.6 中,这个功能只能在设置中修改,在以后的版本中,我们可能会把它放在任务栏里,这样就可以根据需要方便的进行调整。

  • ReSharper 集成
  • 添加对 ReSharper4.5 beta 的支持,添加对反射 API 的缓存以提高性能。


译者介绍:王瑜珩,ThoughtWorks 咨询师,从事多年.NET 开发,热衷于敏捷开发方法与相关实践。

.NET语言 & 开发