Каков наилучший способ создания пользовательских методов расширения для класса VS UT Assert? - PullRequest
3 голосов
/ 11 августа 2011

Я хотел бы знать, как лучше всего написать собственные методы расширений для класса Assert модульного тестирования Microsoft Visual Studio.

Ответы [ 2 ]

7 голосов
/ 11 августа 2011

Если вы ссылаетесь на этот класс Assert , вы не можете добавлять методы расширения.Методы расширения могут применяться только к экземплярам объекта.Поскольку этот класс является статическим, его никогда нельзя создать.

Вы можете добавить свой собственный класс типа Assert, например, так:

public static class MyAssert {
    public static void AreEqual(object expected, object actual) {
        // TODO: throw if not equal
    }
}
1 голос
/ 11 июля 2019

Вы можете создать методы расширения для этого Assert class.

Версия класса Assert теперь имеет вид:

public sealed class Assert
{
    private static Assert that;

    public static Assert That
    {
        get
        {
            if (Assert.that == null)
                Assert.that = new Assert();
            return Assert.that;
        }
    }
}

Это означает, что теперь вы можете создавать методы расширения для класса Assert .

Например, вы можете использовать метод расширения:

public static class AssertExtensions
{
    public static void IsDateToday(this Assert assert, DateTime today)
    {
        if (today.Date != DateTime.Now.Date)
        {
            throw new AssertFailedException($"Kaboom! Assert failed broo..");
        }
    }
}

А затем на модульных тестах вы можете сделать:

Assert.That.IsDateToday(someDateTime);
...