Как обобщенно обрабатывать тестовые утверждения - PullRequest
0 голосов
/ 16 января 2019

Я хотел бы регистрировать все утверждения при модульном тестировании, не будучи слишком навязчивым. В идеале я хотел бы подключить любое тестовое утверждение, такое как Assert.IsTrue, и в случае его сбоя зарегистрируйте утверждение и сообщение в журнале моего приложения (используя log4net).

Ведение журнала особенно полезно в сценариях параллельного тестирования. Если для каждого теста я не использовал команду try catch, я не могу найти способ сделать это - слишком много раздуваемого кода?

Я уверен, что у многих людей есть подобное требование. Я использую последнюю версию Visual Studio 17 и Resharper MSTestV2 тестовый фреймворк и адаптер v1.4.0. Есть идеи? Я упускаю очевидное?

Спасибо заранее С уважением Терри

1 Ответ

0 голосов
/ 16 января 2019

Вероятно, есть некоторые библиотеки, которые могут утверждать с регистраторами из коробки, но если вы просто хотите сделать это самостоятельно, вместо того, чтобы писать try catch для каждого теста, вы можете использовать метод, который принимает действие как параметр. Это действие может принимать любые методы assert.

Примерно так:

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        AssertLogger.AssertWithLogs(() => Assert.IsTrue(false));
    }

    [TestMethod]
    public void TestMethod2()
    {
        AssertLogger.AssertWithLogs(() => Assert.IsTrue(false));
    }
}

public static class AssertLogger
{
    public static void AssertWithLogs(Action assert)
    {
        try {
            assert();
        } catch (Exception ex) {
            //Use log4net or other loggers
            Console.WriteLine(ex.Message);
            throw ex;
        }
    }
} 

Надеюсь, это поможет.

...