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

Erro na aula C++ e TDD: testando unidade catch2

Na aula "C++ e TDD: teste de unidade com catch2" "01.Por que testar?" "06. Testando o codigo" Não consigo rodar o arquivo "teste-avaliador.cpp" no Visual Studio Code, aparece um erro quando executo (Run):

[Running] cd "c:\Users\jessi\OneDrive\Documentos\2050-c-plus-plus-testes-12aec5f553c29843a3a5925e7de7a043dba2758a\2050-c-plus-plus-testes-12aec5f553c29843a3a5925e7de7a043dba2758a\Leilao\testes\" && g++ teste-avaliador.cpp -o teste-avaliador && "c:\Users\jessi\OneDrive\Documentos\2050-c-plus-plus-testes-12aec5f553c29843a3a5925e7de7a043dba2758a\2050-c-plus-plus-testes-12aec5f553c29843a3a5925e7de7a043dba2758a\Leilao\testes\"teste-avaliador

teste-avaliador.cpp:1:25: fatal error: Avaliador.hpp: No such file or directory
 #include "Avaliador.hpp"
                         ^
compilation terminated.

[Done] exited with code=1 in 0.705 seconds

o que devo fazer? não consigo resolver.

Avaliador.cpp:

#include "Avaliador.hpp"

void Avaliador::Avalia(Leilao leilao) 
{
    std::vector<Lance> lances = leilao.recuperaLances();
    Lance ultimoLance = lances.back();
    maiorValor = ultimoLance.recuperaValor();
}

float Avaliador::recuperaMaiorValor() const 
{
    return maiorValor;
}

Avaliador.hpp

#ifndef Avaliador_hpp
#define Avaliador_hpp
#include "Leilao.hpp"

class Avaliador 
{
private:
    float maiorValor;
 public:
    void avalia(Leilao);
    float recuperaMaiorValor() const;
};

#endif /* Avaliador_hpp */
12 respostas

Eduardo, como está sua estrutura de pastas? Você pode me enviar um print?

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

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

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

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

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

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

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

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

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

o erro "Avaliador.cpp" e " teste-avalador.cpp"

solução!

Ah, você não está usando nenhuma IDE... Entendi.

As IDEs de C++, quando criamos uma pasta, fazem isso de forma virtual. Sendo assim nós conseguimos acessar os arquivos normalmente sem nos preocuparmos com onde cada arquivo está.

No seu caso, como você está usando um editor de código apenas, seu trabalho vai ser maior.

Nesse treinamento nós aprendemos sobre o processo de compilação, então esse conhecimento vai ser útil agora.

Primeiro você vai ter que compilar (sem fazer o linking) os arquivos da pasta src. Ou seja, dentro da pasta Leilao, fora de src e testes, você vai rodar:

g++ -c src/*.cpp

Isso vai gerar vários arquivos .o na pasta.

Agora você vai compilar o arquivo que está na pasta testes, fazendo uso do código que está na pasta src. Para isso usamos o parâmetro I do g++. O comando vai ficar assim:

g++ -c tests/teste-avaliador.cpp -I src/

Com isso, você pode unir todos os arquivos .o em um único executável (que é o processo de linking):

g++ *.o -o executavel.exe

Agora seu arquivo executavel.exe é o projeto compilado. Basta rodar ./executavel.exe.

Para continuar o projeto sem todas essas dificuldades, recomendo uma das opções:

  1. Deixar todos os arquivos na mesma pasta
  2. Usar uma IDE