【发布时间】:2013-03-25 11:00:15
【问题描述】:
我正在使用 Microsoft 的 Visual Studio 单元测试框架(因此我必须使用该项目)。我非常想念一些更高级的断言,例如您在MBUnit 中找到的AreElementsEqual。
我想做它们。
由于该类是静态的,我无法从它继承(创建SuperAssert),也无法添加扩展方法(因为它们是静态方法)。
我不想简单地创建另一个类并期望消费者使用两个不同的类。如何扩展课程?
【问题讨论】:
-
I can't add an Extension Method (as they're static methods).为什么?您能否举一些代码示例说明为什么不能添加扩展方法? -
对于 AreElementsEqual,您是否检查过 CollectionAssert 不能满足您的需求?
-
@IlyaIvanov:您根本无法添加可以在类名而不是实例上调用的扩展方法。我看不到您需要代码示例来做什么 - 或者它应该显示什么。
-
@DanielHilgarth 你的意思是非静态方法?扩展方法是静态方法,可以用来扩展\添加更多行为,我猜是 OP 想要的。
-
@IlyaIvanov:扩展方法是静态方法。这是正确的。但是它们只能在对象的实例上调用,而不能在类型名称上调用。示例:您不能创建允许此代码的扩展方法:
int.MyExtension()。你只能创建一个可以这样调用的:int i = 0; i.MyExtension();。
标签: c# unit-testing inheritance static