1

我正在使用 Microsoft 的 Visual Studio 单元测试框架(该项目因此我必须这样做)。我非常想念一些更高级的断言,比如AreElementsEqual你在MBUnit.

我想做它们。

由于该类是静态的,因此我不能从它继承(创建一个SuperAssert),也不能添加扩展方法(因为它们是静态方法)。

我不想简单地创建另一个类并期望消费者使用这两个不同的类。我怎样才能扩大班级?

4

2 回答 2

3

你不能。您将不得不创建一个新的。

或者你可以创建一个现有的包,比如Fluent Assertions

于 2013-03-25T11:01:36.590 回答
1

由于该类是静态的,因此您不能像您说的那样使用扩展方法向该类“添加”更多方法。

您可以在合理范围内做的最接近的事情如下:

public static class AssertExtensions
{
    public static void SuperAssert(bool expression)
    {
        // etc...
    }
}

如果您正在制作一个工具库,要求用户使用另一个类应该不是问题。

如果您仍然担心,为什么不为您的测试创建一个基类并让用户使用其中的方法进行断言?

例如:

public class TestBase
{
    protected void AreEqual(object obj1, object obj2)
    {
        Assert.AreEqual(obj1, obj2); // etc...
    }

    protected void SuperAssert(bool expression)
    {
        // etc...
    }
}
于 2013-03-25T11:07:34.683 回答