Я новичок в UnitTests и, следовательно, в Xunit.Я написал несколько тестов, но я застрял с тестированием событий.
Можно ли проверить, что с xunit не было вызвано ни одного события?
Я использовал этот пример для подготовки своих тестов.
Первый тест работает отлично.Для второго теста я ожидал что-то вроде «Assert.RaisesNoEvent»;Однако этот метод недоступен.
Есть ли другой способ проверить, что событие не было вызвано?
Пример кода
Class
, где возникает событиекогда Property2
равно Set
public class Class
{
private int _property2;
public event EventHandler RelevantPropertyChanged;
public void OnRelevantPropertyChanged(EventArgs args){
RelevantPropertyChanged?.Invoke(this, args);
}
public int Property1 { get; set; }
public int Property2 {
get { return _property2; }
set {
OnRelevantPropertyChanged(new EventArgs());
_property2 = value;
}
}
}
TestClass
определяет модульные тесты для Class
public class TestClass
{
[Fact]
public void ChangeProperty2_RaisesEvent()
{
var cl = new Class();
var args = new EventArgs();
var evt = Assert.RaisesAny<EventArgs>(
h => cl.RelevantPropertyChanged += h,
h => cl.RelevantPropertyChanged -= h,
() => cl.Property2 = 5);
Assert.NotNull(evt);
Assert.Equal(cl, evt.Sender);
Assert.Equal(args, evt.Arguments);
}
[Fact]
public void ChangeProperty1_RaisesNoEvent()
{
var cl = new Class();
Action code = () => cl.Property1 = 5;
Assert.RaisesNoEvent(code); //this is what I want to do
}
}