2008-11-19 19 views

Odpowiedz

17

Zobacz Fluent Assertions. Możesz zrobić rzeczy takie jak:

"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 
+2

Gogle! Oni nic nie robią! – bzlm

0

Na podstawie moich badań nie jest jeden, ale jeśli jesteś gotów poświęcić lepszą sprawozdawczych miarę dlaczego assert zawiodły i chętni, aby dodać nową dll można odwołać nunit i korzystać z ich zajęć ....

5

Zobacz http://sharptestex.codeplex.com/

UWAGA: SharpTestsEx wydaje się nie być aktywnie rozwijane, zaleca alternatywą jest http://www.fluentassertions.com/.

SharpTestsEx (Sharp Tests Extensions) to zestaw rozszerzalnych rozszerzeń. Głównym celem jest pisanie krótkich twierdzeń, w których Visual Studio IDE intellisense jest twoim przewodnikiem. #TestsEx może być używany z NUnit, MsTests, xUnit, MbUnit ... nawet w Silverlight.

Składnia przykładem silnie typowanych twierdzeń (zaczerpnięte ze strony internetowej):

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(); 
+0

Chociaż myślę, że Harrydev mógłby dodać kilka przydatnych informacji, moim zdaniem, SharpTestEx wydaje się nieco bardziej dojrzały niż FluentAssertions. Oczywiście obserwacja wstępna. Każdy może mi pokazać, dlaczego FluentAssertions może być lepsza. – llaughlin

+0

SharpTestEx jest w zasadzie martwy, a Fluent Assosions jest aktywnie rozwijany i dodaje wsparcie dla wszystkich głównych frameworków testowania jednostkowego, jak również wszystkich wersji frameworków .NET, w tym .NET 4.5, WinRT, Silverlight 5 i WP7/8. –