Como fazer para testar mais de 1 objeto com ClassData?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Como fazer para testar mais de 1 objeto com ClassData?
Bom dia Duaogo, tudo bom?
Você pode criar uma classe que implemente a IEnumerable que irá lhe fornecer uma lista de objetos da qual você quer testar, um exemplo:
public class DataGenerator : IEnumerable<object[]>
{
private readonly List<object[]> _data = new List<object[]>
{
new object[]{
new Veiculo()
{ Proprietario = "André Silva",
Tipo = TipoVeiculo.Automovel,
Placa = "ABC-0101",
Modelo = "Fusca"
},
new Veiculo()
{ Proprietario = "BBBBBBBBB",
Tipo = TipoVeiculo.Automovel,
Placa = "GGG-0101",
Modelo = "Monza"
},
new Veiculo()
{ Proprietario = "CCCCCCCC",
Tipo = TipoVeiculo.Automovel,
Placa = "ABC-0101",
Modelo = "Uno"
}
},
new object[]{
new Veiculo()
{ Proprietario = "Pedro Silva",
Tipo = TipoVeiculo.Automovel,
Placa = "BBC-0101",
Modelo = "Fusca"
},
new Veiculo()
{ Proprietario = "DDDDDDDDDDDDDD",
Tipo = TipoVeiculo.Automovel,
Placa = "ASC-0111",
Modelo = "Camaro"
},
new Veiculo()
{ Proprietario = "FFFFFFFFFFF",
Tipo = TipoVeiculo.Automovel,
Placa = "TTT-0100",
Modelo = "Uno"
}
}
};
public IEnumerator<object[]> GetEnumerator() => _data.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}Ai você poderia criar um teste como o abaixo:
[Theory]
[ClassData(typeof(DataGenerator))]
public void TestandoVariosObjetosComClassData(Veiculo a,Veiculo b, Veiculo c)
{
Assert.NotNull(a);
Assert.NotNull(b);
Assert.NotNull(c);
}
Vou deixar também as referências abaixo:
https://nelson-souza.medium.com/parametrizando-testes-unit%C3%A1rios-55d34a2f1630
https://medium.com/thiagobarradas/alem-do-fact-com-xunit-dotnet-6a52b69a50d2
https://gist.github.com/ThiagoBarradas/67dd229ad7aa7e0466493d7a606bf421
Espero que tenha ajudado e, qualquer coisa, estamos à disposição!
Abraços e bons estudos 😄