Это мой текущий тест. Это удается, что должно быть очевидно не do. Как я могу сделать этот тест неудачным?xUnit Асинхронный тест в обратном вызове
[Fact]
public async Task ExecuteCallback()
{
Timer timer = new Timer();
timer.Elapsed += (sender, e) =>
{
new MyClassUnderTest((param) =>
{
Assert.Null(param);
Assert.NotNull(param);
timer.Stop();
});
};
timer.Interval = 500;
timer.Start();
System.Threading.Thread.Sleep(1000);
}
Я хочу, чтобы проверить внутреннюю логику моего класса (как она выполняет прилагаемые действия и его параметры), и особенно его поведение, когда он работает в EventHandler, так как это делает некоторые сложные вещи с потоками.
Почему вы выбрали этот метод тестирования в первую очередь? Почему вы полагаетесь на «Таймер»? –
Я выбираю этот способ тестирования, потому что он очень близок к проблеме производства, которую я пытаюсь решить. Если бы у меня было бы хоть какое-то высказывание в дизайне, у меня, вероятно, были бы другие проблемы :). У меня также нет опыта в асинхронном тестировании, поэтому я просто скопировал код с ошибкой. Оставлю весь код, который я не хочу тестировать, и вставил некоторые Asserts. Любое предложение о том, как сделать это лучше, ценится. –
В вашем методе нет ничего «асинхронного». Вы просто запускаете объект Timer. Вам не нужно отмечать ваш метод 'async Task' для этого, поскольку вы ничего не ожидаете. Проходит ли таймер? –