65.9K
CodeProject 正在变化。 阅读更多。
Home

Contest。又一个测试框架

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2016年1月7日

CPOL

4分钟阅读

viewsIcon

8402

介绍contest。新的.NET测试框架。

引言

在这篇短文中,我将简要介绍contest,一个.NET的新测试框架。我将重点介绍它的主要特点、相较于现有框架的优势,并提供一些链接供想动手尝试的人参考。
这绝不是一个完整的指南或使用contest的教程。如果您需要,请访问GitHub上的contest主页contest入门指南,其中有关于如何创建、构建和运行此框架测试的教程。

背景

我假设读者至少具备使用一个主流单元测试框架(如NUnit、MSTest等)的实际经验。

什么是contest?

Contest是一个为.NET设计的极简主义、基于约定的测试框架。它是开源的(MIT许可),可以在Linux、Mac和Windows上运行。它附带一个快速的控制台测试运行器,并支持从流畅断言到BDD以及介于两者之间的各种测试风格。它的语法简洁明了,(在某些情况下)允许您编写可以被最终用户阅读的测试用例。下面是一个例子

	// Fluent Assertions
	_ when_order_ammount_exceeds_1000_shipping_cost_should_be_free = 
		assert => That(ThousandDollarsOrder.ShippingCost).Is(0);

	// BDD style
	_ when_order_ammount_exceeds_1000_shipping_cost_should_be_free = 
		expect => ThousandDollarsOrder.ShippingCost.ToBe(0)

	// * note: I'm using one liners for the sake of brevity.

相较于其他测试框架的优势

  • 基于约定,无需冗余的注解。
  • 开箱即用地支持多种测试风格(Fluent、BDD等)。
  • 灵活的控制台测试运行器。
  • 程序集级别的设置/拆卸。
  • 轻量级

谁在使用contest

大多数contest用户是.NET开发者,他们在Linux和Mac上工作,使用文本编辑器(如Vi或Sublime)编写代码,并以mono为主要运行时。当然,大多数应用程序部署到生产环境时运行在Windows上,但目前,控制台测试运行器在Windows系统上的速度非常慢(比Ubuntu或OSX慢约10倍)。我正在努力改进这一点,让我们看看效果如何……

为什么我们需要另一个测试框架?

如果您在Windows上运行,使用Visual Studio、ReSharper等工具,您可能不需要另一个测试框架。我使用NUnit已经十多年了,它是一款非常出色的软件。但是,如果您在Linux上进行.NET开发,使用Vi(或其他任何二等编辑器;))您可能会发现contest比NUnit更灵活。在我看来,NUnit的设计是为了从GUI运行器使用的。(我知道NUnitConsole,但我认为它对于构建服务器来说是完全可以的工具,但对于“红、绿、重构”周期来说就不那么好了)。
我非常喜欢contest的另一个方面是它的简洁语法,在使用文本编辑器时,简洁的语法至关重要。

控制台测试运行器亮点

  • 通配符过滤
  • 重新运行失败的测试
  • 查找慢速测试
  • 易于附加到Visual Studio的调试器。
  • 列出失败的测试

限制

  • 缺乏Visual Studio集成(因此,没有开箱即用的调试器)。
  • 缺乏GUI运行器。
  • 用户群小。
  • 虽然您可以调试您的测试,但这是一种手工的过程(只能手动附加)。

如何获取Contest?

您可以从nugetgithub获取contest。
但是,如果您想要最新的、最棒的版本,您应该始终直接前往github

想了解更多关于contest的信息?

目前,所有动态都发生在github上。那里是您应该去的地方。

Contest是终极测试框架吗?

不,它不是。它只是为在UNIX系统上进行.NET开发的用户提供的一个替代方案。虽然它可以在Windows上使用,但我认为缺乏Visual Studio集成或GUI运行器对大多数.NET开发者来说是不可接受的。(这完全没问题,不久之前,这对我也将是一个无法接受的缺点)。

许可证

Contest根据MIT许可发布。简而言之,就是给予我署名,但不承担责任。

想立即开始开发?

太棒了!请前往GitHub上的Contest入门页面。在那里,您将找到一个入门项目,让您可以在无需安装或配置任何内容的情况下尝试contest。只需fork仓库并按照说明进行操作。

免责声明

请注意,这是Alpha软件。如果您喜欢走在技术前沿,那么您会很满意。但如果您正在寻找一个极其稳定、可靠的版本,您可能需要等待几个月(如果那一天真的会来的话)。

感谢您的阅读,如果您有任何问题,请告诉我。

© . All rights reserved.