Skip to content

Instantly share code, notes, and snippets.

@scovl
Last active February 10, 2023 12:38
Show Gist options
  • Save scovl/5d073632b9b4d858e83020933cdfcb64 to your computer and use it in GitHub Desktop.
Save scovl/5d073632b9b4d858e83020933cdfcb64 to your computer and use it in GitHub Desktop.
throw new
Você pode adicionar uma exceção personalizada criando uma nova classe que estenda Exception e capturá-la dentro do bloco de código que você deseja tratar. Por exemplo:
class NamespaceException extends Exception {
public NamespaceException(String message) {
super(message);
}
}
...
while ((stderr = stdError.readLine()) != null) {
Logger.info("Erro ao listar namespaces: ", stderr, stderr);
throw new NamespaceException("Erro ao listar namespaces");
}
Em seguida, você pode capturar a exceção personalizada como mostrado abaixo:
try {
...
while ((stderr = stdError.readLine()) != null) {
Logger.info("Erro ao listar namespaces: ", stderr, stderr);
throw new NamespaceException("Erro ao listar namespaces");
}
} catch (NamespaceException e) {
String msg = "Ocorreu um erro ao listar namespaces: " + e.getMessage();
Logger.error(msg, e);
}
Para testar esse trecho de código utilizando o Mockito, você precisará criar um mock para o objeto BufferedReader chamado stdError, que representa o BufferedReader que está lendo o conteúdo do stream de erro. Em seguida, você pode usar o Mockito para definir o comportamento desse objeto mock, fazendo com que ele retorne uma string não nula quando o método readLine() é chamado. Além disso, você precisará capturar a exceção lançada pela instrução throw.
Aqui está um exemplo de como esse teste poderia ser escrito usando o Mockito:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import java.io.BufferedReader;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class Task1Test {
@Mock
private BufferedReader stdError;
@Test(expected = NamespaceException.class)
public void testListarNamespaces_error() throws Exception {
when(stdError.readLine()).thenReturn("error message");
while ((stderr = stdError.readLine()) != null) {
Logger.info("Erro ao listar namespaces: ", stderr, stderr);
throw new NamespaceException("Erro ao listar namespaces");
}
}
}
Para testar esse trecho de código utilizando o Mockito, você precisará criar um mock para o objeto BufferedReader chamado stdError, que representa o BufferedReader que está lendo o conteúdo do stream de erro. Em seguida, você pode usar o Mockito para definir o comportamento desse objeto mock, fazendo com que ele retorne uma string não nula quando o método readLine() é chamado. Além disso, você precisará capturar a exceção lançada pela instrução throw.
Aqui está um exemplo de como esse teste poderia ser escrito usando o Mockito:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import java.io.BufferedReader;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class Task1Test {
@Mock
private BufferedReader stdError;
@Test(expected = NamespaceException.class)
public void testListarNamespaces_error() throws Exception {
when(stdError.readLine()).thenReturn("error message");
while ((stderr = stdError.readLine()) != null) {
Logger.info("Erro ao listar namespaces: ", stderr, stderr);
throw new NamespaceException("Erro ao listar namespaces");
}
}
}
Nesse exemplo, estamos utilizando a anotação @RunWith(MockitoJUnitRunner.class) para dizer ao JUnit que deve usar o Mockito como o executor de teste. Além disso, estamos usando a anotação @Mock para dizer ao Mockito que precisamos criar um mock para a variável stdError. Em seguida, no método de teste testListarNamespaces_error, estamos definindo o comportamento do objeto mock para retornar "error message" quando o método readLine() é chamado. Finalmente, estamos usando a anotação @Test(expected = NamespaceException.class) para indicar que esperamos que a exceção NamespaceException seja lançada durante a execução desse teste.
O HTTP response error mais adequado para um RuntimeException é o status 500 Internal Server Error. Este status indica que o servidor encontrou uma condição inesperada e não pôde concluir a requisição do cliente. Ele geralmente é usado para indicar erros no lado do servidor, como exceções de runtime, erros de banco de dados ou erros de programação. Além disso, a mensagem de resposta inclui uma descrição genérica do erro, mas não fornece detalhes específicos sobre a causa da falha.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment