1
resposta

Mas como faço para testar mais de 1 objeto

Como fazer para testar mais de 1 objeto com ClassData?

1 resposta

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);          
        }

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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 😄


Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!