2009-10-04 60 views
1

我的猜测是,单元测试的当前语义涉及实际调用的方法,即,如果我有一个方法MyTest()那么这就是被调用。我的问题是这样的:是否有可能以某种方式更改测试方式的管道(最好不用重新编译测试运行器),例如,不是直接调用方法,而是通过我提供的包装器调用(即MyWrapper(MyTest)) ?是否可以改变单元测试的调用方式?

谢谢。

+0

什么MyWrapper办?您可以在调用测试方法之前/之后使用Setup&TearDown。 – shahkalpesh 2009-10-04 05:57:35

+0

这不是我所追求的 – 2009-10-04 14:27:15

回答

3

如果您使用MbUnit的,然后有很多的东西,你可以通过定义自定义属性自定义。

最简单的方法是创建TestDecoratorAttribute的子类,并重写SetUp,TearDown或Execute方法,以便使用您选择的其他逻辑来包装它们。

但是,如果您需要更精细的控制,则可以改为创建TestDecoratorPatternAttribute的子类,并用逻辑覆盖DecorateTest方法以添加其他测试操作或测试实例操作。

例如,MbUnit的[重复]通过包装试验的身体动作运行(运行测试的所有阶段)用环和一些额外簿记反复运行测试属性作品。

下面是RepeatAttribute代码:http://code.google.com/p/mb-unit/source/browse/trunk/v3/src/MbUnit/MbUnit/Framework/RepeatAttribute.cs

+0

哇,标记为* *答案,因为这是我一直在寻找的。谢谢! – 2009-10-04 14:25:15

2

这取决于单元测试框架如何提供拦截和可扩展能力。

大多数框架(MSTest的,NUnit的等)允许您定义保证测试前和测试后,运行安装和拆卸方法。

xUnit.NET具有更高级的扩展性机制,您可以在其中定义可用于修饰测试方法以更改其调用方式的自定义属性。作为一个例子,有一个TheoryAttribute允许你定义参数化测试。

我不知道MbUnit的,所以我不能说是否支持这些方案或没有。

相关问题