Я создаю тестовую среду для селена на основе .Net Core, и команда решила использовать xUnit.Все хорошо, все идет хорошо, но какое-то время мы без особой удачи пытались воспроизвести функциональность слушателей Java TestNG.
Я копался в репозитории xunit git и нашелнесколько случаев, когда некоторые интерфейсы, такие как ITestListener
были использованы.После более глубокого изучения я обнаружил, что эти слушатели относятся к пакету под названием TestDriven.Framework
, и я хотел точно знать, как бы я использовал тестовый слушатель, созданный с использованием этих интерфейсов?
Пока это мой простой тестовый слушатель, которыйследует написать что-то, когда тест не пройден:
public class Listener
{
readonly int totalTests;
public Listener(ITestListener listener, int totalTests)
{
this.totalTests = totalTests;
TestListener = listener;
TestRunState = TestRunState.NoTests;
}
public ITestListener TestListener { get; private set; }
public TestRunState TestRunState { get; set; }
public void onTestFail(ITestFailed args)
{
Console.WriteLine(args.Messages);
}
}
Теперь я знаю, что вы можете сделать это в отрывном крючке, но помните, это всего лишь простой пример, и я имею в виду нечто более сложное.Чтобы быть точным, где / как именно я зарегистрирую тест, чтобы использовать этот слушатель?В Java TestNg у меня было бы @Listeners
, но в C # я не слишком уверен.
Редактировать 1 , поэтому пример сработал и сумел добавить его в мою структуру проекта, но когда япопробуйте использовать это
class TestPassed : TestResultMessage, ITestPassed
{
/// <summary>
/// Initializes a new instance of the <see cref="TestPassed"/> class.
/// </summary>
public TestPassed(ITest test, decimal executionTime, string output)
: base(test, executionTime, output) {
Console.WriteLine("Execution time was an awesome " + executionTime);
}
}
У меня проблемы с регистрацией этого, или если я даже регистрирую это правильно.Что касается примеров, я нашел фактические приемники сообщений, но также нашел фактические данные о состоянии теста, которые я не совсем уверен, как использовать.