Sou novo em TDD e xUnit, então quero testar meu método que se parece com:
List<T> DeleteElements<T>(this List<T> a, List<T> b);
Existe algum método Assert que eu possa usar? Eu acho que algo assim seria bom
List<int> values = new List<int>() { 1, 2, 3 };
List<int> expected = new List<int>() { 1 };
List<int> actual = values.DeleteElements(new List<int>() { 2, 3 });
Assert.Exact(expected, actual);
Existe algo assim?
Na versão atual do XUnit (1.5), você pode apenas usar
O método acima fará uma comparação elemento a elemento das duas listas. Não tenho certeza se isso funciona para qualquer versão anterior.
fonte
Com o xUnit, se você quiser selecionar as propriedades de cada elemento para testar, pode usar Assert.Collection.
Isso testa a contagem esperada e garante que cada ação seja verificada.
fonte
Recentemente, eu estava usando
xUnit 2.4.0
eMoq 4.10.1
pacotes em meu núcleo asp.net 2.2 aplicativo.No meu caso, consegui fazê-lo funcionar com um processo de duas etapas:
Definindo uma implementação de
IEqualityComparer<T>
Passe a instância do comparador como um terceiro parâmetro no
Assert.True
método:Assert.True(expected, actual, new MyEqualityComparer());
Mas existe outra maneira melhor de obter o mesmo resultado usando o pacote FluentAssertions . Ele permite que você faça o seguinte:
Curiosamente, isso
Assert.Equal()
sempre falha, mesmo quando ordenei os elementos de duas listas para colocá-los na mesma ordem.fonte