¿Cuál cree que es la forma más limpia de hacer varias afirmaciones sobre un resultado? En el pasado les puse todas la misma prueba, pero esto está empezando a sentirse un poco sucio, solo he estado jugando con otra idea usando setup.Mejores prácticas para múltiples afirmaciones sobre el mismo resultado en C#
[TestFixture]
public class GridControllerTests
{
protected readonly string RequestedViewId = "A1";
protected GridViewModel Result { get; set;}
[TestFixtureSetUp]
public void Get_UsingStaticSettings_Assign()
{
var dataRepository = new XmlRepository("test.xml");
var settingsRepository = new StaticViewSettingsRepository();
var controller = new GridController(dataRepository, settingsRepository);
this.Result = controller.Get(RequestedViewId);
}
[Test]
public void Get_UsingStaticSettings_NotNull()
{
Assert.That(this.Result,Is.Not.Null);
}
[Test]
public void Get_UsingStaticSettings_HasData()
{
Assert.That(this.Result.Data,Is.Not.Null);
Assert.That(this.Result.Data.Count,Is.GreaterThan(0));
}
[Test]
public void Get_UsingStaticSettings_IdMatches()
{
Assert.That(this.Result.State.ViewId,Is.EqualTo(RequestedViewId));
}
[Test]
public void Get_UsingStaticSettings_FirstTimePageIsOne()
{
Assert.That(this.Result.State.CurrentPage, Is.EqualTo(1));
}
}
"Aserciones lógicas" es una buena palabra para ello. Es interesante que el ejemplo de Assertion Roulette es esencialmente un ejemplo de "cómo equivocarse al no hacer Arrange-Act-Assert". ¿Los conceptos son diferentes? – Anthony
@Anthony: los conceptos difieren, aunque están estrechamente relacionados. Es mucho menos probable que sienta el dolor de Assertion Roulette si sigue AAA (o Four Phase Test como lo llama xUnit Test Patterns), pero aún sería diferente si tuviera Assertions completamente sin relación en el mismo bloque de Assertion. –
La idea de Assertion Roulette se puede minimizar en NUnit especificando un comentario en la declaración de Assertion. En lugar de hacer "Assert.That (condition)" use "Assert.That (condition, failureMessage)" donde "failureMessage" es información sobre lo que el Assert estaba verificando. Esto le permitirá saber exactamente qué Assert en una prueba de unidad falló. – Pedro