Un par de Assert’s extras que vienen con XUnit.NET y son sumamente útiles, son aquellos capaces de trabajar con rangos, y estos pueden usar nuestros IComparer<T>, como siempre, nada explica mejor que un FactSet
[Fact]
public void It_must_assert_number_is_in_a_range_of_numbers()
{
Assert.InRange(1, 1, 3);
Assert.InRange(2, 1, 3);
Assert.InRange(3, 1, 3);
Assert.NotInRange(4, 1, 3);
Assert.NotInRange(0, 1, 3);
}
[Fact]
public void It_must_assert_letter_is_in_a_range_of_letters()
{
Assert.InRange("a", "a", "d");
Assert.NotInRange("e", "a", "d");
Assert.NotInRange("B", "a", "b");
Assert.InRange("B", "a", "b", StringComparer.InvariantCultureIgnoreCase);
}
Otro aspecto que solemos probar es si una instancia es asignable, del tipo o derivada (implementada) a partir de otro tipo, en otras palabras, si hereda o implementa a alguien más. Esto es facil con IsType e IsAssignableFrom
[Fact]
public void It_must_assert_object_is_of_same_type()
{
var item = new MySimpleEntity();
Assert.IsType<MySimpleEntity>(item);
Assert.IsNotType<IDoable>(item);
}
[Fact]
public void It_must_assert_object_is_assignable_from_type()
{
var item = new MySimpleEntity();
Assert.IsAssignableFrom<IDoable>(item);
}
Y por último, a veces necesitamos probar que una instancia representa la misma instancia que otra, no precisamente que es “igual”, esto lo logramos con “Same”:
[Fact]
public void It_must_assert_object_is_the_same_instance()
{
var item = new MySimpleEntity();
var other = item;
var another = new MySimpleEntity();
Assert.Same(item, other);
Assert.NotSame(item, another);
}
Bien, continuaremos luego con más XUnit.NET, todo esto como un empujon para animarlos a probar TDD y en especial esta Testing Framework sumamente útil
Saludos!