"проще" просто добавить кучу утверждений в существующий тестовый пример, потому что вам не нужно создавать новые тестовые наборы (и придумывать для них имена), но я бы предпочел написать меньшие тесты, которые более конкретны. Основным преимуществом является то, что у вас будет больше информации, если / когда тест не пройден, о том, что пошло не так.
Посмотрим, смогу ли я придумать надуманный пример:
[Fact]
public void TestEverything()
{
var foo = new Foo();
Assert.Equal(42, foo.TheAnswer);
Assert.Equal(string.Empty, foo.Log);
foo.DoSomething();
Assert.Equal("something was done", foo.Log);
}
[Fact]
public void TheAnswer_AfterCreation_ShouldAdhereToTheHitchhikersGuide()
{
var foo = new Foo();
Assert.Equal(42, foo.TheAnswer);
}
[Fact]
public void Log_AfterCreation_ShouldBeEmpty()
{
var foo = new Foo();
Assert.Equal(string.Empty, foo.Log);
}
[Fact]
public void Log_DoSomething_ShouldLogSomething()
{
var foo = new Foo();
foo.DoSomething();
Assert.Equal("something was done", foo.Log);
}
Как видите, придумать хорошие имена для методов тестирования очень сложно (а я плохо выполнил задание, особенно для последнего), но просто представить, что произойдет, если TheAnswer_AfterCreation_ShouldAdhereToTheHitchhikersGuide
не удастся: вы получите довольно хорошее описание от ваш тестовый жгут вместо информации о том, что TestEverything
не удался (Задача: попробуйте найти более подходящее название для него ;-))