Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Erro ao executar o programa

Ao executar o projeto está dando o seguinte erro:

A project with Output Type of Classe Library cannot be started directly In order to debug this project, add an executable project to this solution which references the library project. Set the executable project as the startup project.

Já fiz os seguintes procedimentos: Solution Explorer -> Caelum.Leilao -> Set as Startup Projetct

Solution Explorer -> Caelum.Leilao -> Properties -> Output Type -> Class Library

Abaixo a classe AvaliadorTest

using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Caelum.Leilao
{
    [TestFixture]
    public class AvaliadorTest
    {
        [Test]
        public void DeveEntenderLancesEmOrdemCrescente()
        // static void Main(String[] args)
        {

            Usuario joao = new Usuario("João");
            Usuario jose = new Usuario("José");
            Usuario maria = new Usuario("Maria");

            Leilao leilao = new Leilao("Geladeira");
            leilao.Propoe(new Lance(maria, 250.0));
            leilao.Propoe(new Lance(jose, 300.0));
            leilao.Propoe(new Lance(maria, 400.0));



            Avaliador leiloeiro = new Avaliador();
            leiloeiro.Avalia(leilao);


            double maiorEsperado = 400;
            double menorEsperado = 250;

            Assert.AreEqual(maiorEsperado, leiloeiro.MaiorLance, 0.0001);

            Assert.AreEqual(menorEsperado, leiloeiro.MenorLance, 0.0001);
        }
    }
}
4 respostas

Olá, Denise!

Você precisa mudar o tipo do projeto para Console Application:

Solution Explorer -> Caelum.Leilao -> Properties -> Output Type -> Console Application

Também verifique se o seu projeto tem uma classe com o seguinte método de entrada obrigatório com esta assinatura:

static void Main(String[] args)

Boa sorte e bons estudos!

Olá Marcelo. Eu copiei esse código da aula do instrutor Maurício, e no vídeo ele passa as seguintes instruções: 1) um método de teste deve sempre ser público, de instância (isto é, não pode ser static) e não receber nenhum parâmetro;

2) deve ser anotado com [Test];

3) a classe deve ser anotada com [TestFixture];

4) Importar NUnit.Framework, que é o namespace que tem tudo que precisamos do NUnit.

Para realizar os testes, ele executa o programa no modo Class Library

Denise, no vídeo 1 o instrutor tenta rodar (No Visual Studio) o projeto aos 7:33 minutos, sem sucesso, mas depois ele modifica aos 7:45 minutos o projeto de Class Library para Console Application. Só então ele consegue executar a aplicação (No Visual Studio).

A partir daí ele começa a modificar a classe TesteDoAvaliador para poder testar no NUnit Aos 18:50, ele remove os parâmetros (String[] args) do método Main da classe (porque essa é uma exigência do NUnit).

Aos 20:00, ele volta o projeto para Class Library, para poder executar o teste com o NUnit (não no Visual Studio).

O problema é que pra rodar o teste no NUnit ele "desmontou" o método de entrada (Main) da aplicação console. Sem esse método, a aplicação não pode mais rodar em console. Você pode resolver isso criando uma nova classe testável, e a partir do método Main(String[] args) chamar os métodos dessa classe. Assim você pode tanto rodar dentro do console do Visual Studio quanto testar a classe no NUnit.

solução!

Oi Marcelo, Fiz o que você me falou e deu certo. Obrigada :D