1

私はMicrosoftのVisualStudio単体テストフレームワークを使用しています(したがって、プロジェクトでは使用する必要があります)。にあるような、より高度なアサーションのいくつかが非常に不足していAreElementsEqualますMBUnit

作りたいです。

クラスは静的であるため、(を作成するためにSuperAssert)継承することはできず、拡張メソッドを追加することもできません(静的メソッドであるため)。

単に別のクラスを作成して、消費者が2つの異なるクラスを使用することを期待したくありません。クラスを拡張するにはどうすればよいですか?

4

2 に答える 2

3

できません。新しいものを作成する必要があります。

または、 FluentAssertionsなどの既存のパッケージを作成することもできます。

于 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 に答える