Какой обработчик событий подписаться и Assert.AreEqual не работает - PullRequest
0 голосов
/ 05 августа 2009

Я хочу вызвать метод, когда мой интеграционный тест не пройден (т. Е. Assert.AreEqual не пройден), есть ли какой-либо делегат события, на который я могу подписаться в платформе NUnit? Конечно, делегат события должен быть запущен, когда тесты не пройдены.

Это потому, что в моих тестах было много операторов Assert, и я не могу сказать, нужно ли регистрировать Assert вместе с информацией об утверждении, которая вызывает проблему в моем трекере ошибок. Лучший способ сделать это - при неудачном завершении теста вызывается метод делегата.

Ответы [ 3 ]

0 голосов
/ 14 января 2010

Похоже, что нет события, на которое я могу подписаться в случае сбоя подтверждения

0 голосов
/ 03 июля 2015

Звучит так, будто вы хотите создать своего собственного бегуна-испытателя.

Существует различие между тестами (a определяет действия) и выполнением тестов (фактически запуском тестов). В этом случае, если вы хотите обнаружить, что тест не пройден, вы должны будете сделать это при запуске теста.

Если все, что вам нужно, это отправить электронное письмо при сбое, может быть проще всего создать сценарий (powershell / batch), который запускает средство запуска командной строки и отправляет электронное письмо при сбое (вашей системе отслеживания ошибок? )

Если вам нужна более сложная интерактивность, возможно, вам стоит подумать о создании собственного бегуна. Бегун может запустить тест, а затем принять меры на основе результатов. В этом случае вы должны искать в пространстве имен Nunit.Core интерфейс запуска тестов.

Например (не проверено):

TestPackage package = new TestPackage();
package.add("c:\some\path\to.dll");
SimpleTestRunner runner = new SimpleTestRunner();
if (runner.Load(Package)){
    var results = runner.Run(new NullListener(), TestFilter.Empty, false, LoggingThreshold.Off);
    if(results.ResultState != ResultState.Success){
        ... do something interesting ...
    }
}

РЕДАКТИРОВАТЬ: лучший фрагмент кода https://stackoverflow.com/a/5241900/1961413

0 голосов
/ 05 августа 2009

Мне любопытно, какую проблему вы пытаетесь решить, делая это? Я не знаю, как сделать это с NUnit, но есть грязный способ сделать это. Вы можете предоставить Func и вызвать его как сообщение об ошибке. Тело Func может предоставить вам делегацию, которую вы ищете.

var callback = new Func<string>(() => {
        // do something
        return "Reason this test failed";
    });
Assert.AreEqual("", " ", callback.Invoke());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...