Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Dica - Aula

A primeira dica é que no C# você pode fazer o uso da palavra reservada "var" antes da variável que vc está declarando em alguns casos, por exemplo:

Rota rota = new Rota("Rio de Janeiro", "Santiago");

//pode ser substituído por
var rota = new Rota("Rio de Janeiro", "Santiago");

Agora a dica sobre a aula é:

Quando você utiliza o Assert.Contains, você parte do princípio que esse texto nunca vai ser mudado ou que o desenvolvedor/testador escreveu o texto exatamente igual e que não houve eventualmente nenhum erro de digitação ou na hora de colar o texto nos testes.

        [Fact]
        public void TestandoPrecoNegativo()
        {
            //Arrange
            var rota = new Rota("Rio de Janeiro", "Santiago");
            var periodo = new Periodo(new DateTime(2025, 4, 5), new DateTime(2025, 4, 15));
            double preco = -100.00;

            //Act
            var oferta = new OfertaViagem(rota, periodo, preco);

            //Assert
            Assert.Contains("O preço da oferta de viagem deve ser maior que zero.", oferta.Erros.Sumario);
        }

Em vez disso, você pode verificar se a condição a ser satisfeita é verdadeira. No caso, se o preço da oferta for menor que zero, o teste passa.

        [Fact]
        public void TestandoPrecoNegativo()
        {
            //Arrange
            var rota = new Rota("Rio de Janeiro", "Santiago");
            var periodo = new Periodo(new DateTime(2025, 4, 5), new DateTime(2025, 4, 15));
            double preco = -100.00;

            //Act
            var oferta = new OfertaViagem(rota, periodo, preco);

            //Assert
            Assert.True(preco < 0);
        }
1 resposta
solução!

Olá Zoran! Tudo bem?

Muito obrigado por compartilhar suas sugestões e observações! Você trouxe pontos interessantes sobre o uso do var e a abordagem com Assert.Contains em testes.

Sobre o uso do var, é uma prática comum em C# para tornar o código mais limpo e legível, especialmente quando o tipo da variável é evidente a partir do lado direito da atribuição.

Quanto à sua sugestão sobre o Assert.Contains, é verdade que depender de uma string exata pode ser arriscado se houver mudanças no texto. No entanto, a abordagem com Assert.Contains é útil quando queremos garantir que uma mensagem de erro específica é gerada, o que é importante em muitos cenários de teste para validar o comportamento esperado do sistema.

A sua sugestão de usar Assert.True(preco < 0) pode ser útil em outro contexto, como verificar a lógica de validação antes de criar a oferta. No entanto, no contexto do teste de unidade que você mencionou, o objetivo é garantir que uma mensagem de erro específica seja adicionada ao sumário de erros quando o preço é negativo, conforme a lógica de negócio implementada.

Ambas as abordagens têm seus méritos, e a escolha depende do que exatamente queremos validar com o teste.

Bons estudos!