should .net unit-testing mstest fluent fluent-interface

.net - should - fluent assertions



¿Hay una API de afirmación fluida para MSTest? (3)

Recientemente he estado expuesto a la interfaz fluida en nUnit y me encanta; sin embargo, estoy usando msTest.

¿Alguien sabe si hay una interfaz fluida que sea prueba marco agnóstico o para msTest?


Ver http://sharptestex.codeplex.com/

NOTA: SharpTestsEx parece que ya no se desarrolla activamente, la alternativa recomendada es http://www.fluentassertions.com/ .

SharpTestsEx (Sharp Tests Extensions) es un conjunto de extensiones extensibles. El objetivo principal es escribir afirmaciones cortas donde el Visual Studio IDE intellisense es su guía. #TestsEx se puede usar con NUnit, MsTests, xUnit, MbUnit ... incluso en Silverlight.

Ejemplo de sintaxis para afirmaciones fuertemente tipadas (tomadas de la página web):

true.Should().Be.True(); false.Should().Be.False(); const string something = "something"; something.Should().Contain("some"); something.Should().Not.Contain("also"); something.ToUpperInvariant().Should().Not.Contain("some"); something.Should() .StartWith("so") .And .EndWith("ing") .And .Contain("meth"); something.Should() .Not.StartWith("ing") .And .Not.EndWith("so") .And .Not.Contain("body"); var ints = new[] { 1, 2, 3 }; ints.Should().Have.SameSequenceAs(new[] { 1, 2, 3 }); ints.Should().Not.Have.SameSequenceAs(new[] { 3, 2, 1 }); ints.Should().Not.Be.Null(); ints.Should().Not.Be.Empty(); ints.Should() .Contain(2) .And .Not.Contain(4); (new int[0]).Should().Be.Empty();


Basado en mi investigación, no hay ninguno, pero si estás dispuesto a sacrificar la mejor notificabilidad en cuanto a por qué falló una afirmación y estás dispuesto a agregar una nueva dll, puedes hacer referencia a nunit y usar la suya ....


Ver Afirmaciones fluidas . Puedes hacer cosas como

"ABCDEFGHI".Should().StartWith("AB").And.EndWith("HI").And.Contain("EF").And.HaveLength(9); new[] { 1, 2, 3 }.Should().HaveCount(4, "because we thought we put three items in the collection")) dtoCollection.Should().Contain(dto => dto.Id != null); collection.Should().HaveCount(c => c >= 3); dto.ShouldHave().AllPropertiesBut(d => d.Id).EqualTo(customer); dt1.Should().BeWithin(TimeSpan.FromHours(50)).Before(dt2); Action action = () => recipe.AddIngredient("Milk", 100, Unit.Spoon); action .ShouldThrow<RuleViolationException>() .WithMessage("Cannot change the unit of an existing ingredient") .And.Violations.Should().Contain(BusinessRule.CannotChangeIngredientQuanity