O teste de unidade Debug suspeita que o ponto de interrupção é inválido

Durante o teste de unidade, um erro de depuração apareceu repentinamente

1. O ponto de interrupção suspeito é inválido

Ao definir um ponto de interrupção, mas ele não pode ser executado no ponto de interrupção, o blogueiro pensa que o ponto de interrupção é inválido e há vários motivos para encontrar o erro de ponto de interrupção na Internet (acredito que será encontrado no futuro)

Adicionando na primeira linha do corpo do método da classe de teste:

int intNum = 1; 

insira a descrição da imagem aqui

Testei o ponto de interrupção e de repente descobri que não foi o ponto de interrupção que falhou, mas que a primeira linha do código estava errada, então o primeiro problema foi resolvido sem problemas

2. Erro de método estático de classe

Variáveis ​​estáticas de uma classe, métodos estáticos são carregados na memória junto com a classe, portanto, erros em métodos estáticos devem ser lançados antes dos erros em métodos de objeto, métodos de objeto pertencem a objetos e só serão lançados quando forem chamados por objetos

bloco de código estático

Localize o problema do método estático de segunda classe

3. Problema no caminho do arquivo de recursos de leitura do projeto da web Java

Através da divisão de código: divida o código simplificado um por um com múltiplas variáveis ​​de referência, como

properties.load(Druid.class.getClassLoader().getResourceAsStream("druid.properties"));

dividido em

ClassLoader classLoader = Druid.class.getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("druid.properties");
properties.load(inputStream);

Depurando através do Step Into (F7) (clique no corpo do método para entrar) e descobri que o valor obtido pelo
insira a descrição da imagem aqui
meu inputStream é nulo

Isso mostra que a classe não leu com êxito o arquivo de recursos "druid.properties" e meu caminho druid.properties é src/druid.properties.

Vi a explicação do Grande Deus na Internet:

A forma como o primeiro carregador de classes carrega arquivos de recursos:
class.getClassLoader().getResourceAsStream(String name)

Por padrão, os arquivos são encontrados em ==caminho de classe (ou seja, "diretório/destino/classes raiz do projeto")==. O
nome deve ser relativo ao caminho de classe, ou seja, o caminho relativo do arquivo do pacote de classe atual, e não pode conter "/", caso contrário, um ponteiro nulo será lançado.

A JVM copia os arquivos no "diretório raiz do projeto /src/main/resources" para o diretório classpath durante a compilação automática, então coloque druid.properties no diretório raiz do projeto /src/main/resources , após a compilação, o caminho absoluto correspondente ao caminho relativo "druid.properties" no código-fonte é **"project root directory/target/classes/druid.properties"**

InputStream inputStream = Druid.class.getClassLoader().getResourceAsStream("druid.properties");

O arquivo de recurso foi carregado com sucesso e este erro foi corrigido!

Reabastecimento

Além disso, adicione um segundo método de carregamento de arquivos de recursos do carregador de classe:
class.getResourceAsStream(String name) ,
name deve usar um caminho absoluto com o classpath como o diretório raiz e o caminho absoluto usa "/" como o cabeçalho do caminho, então

 InputStream inputStream = Druid.class.getResourceAsStream("/druid.properties");

referência

O projeto Java lê o caminho do arquivo de recursos de recursos
[IntelliJ IDEA] Registro de uso de depuração de depuração

Acho que você gosta

Origin blog.csdn.net/weixin_45549370/article/details/114825156
Recomendado
Clasificación