Como fazer para testar mais de 1 objeto com ClassData?
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 😄