Как написать тестовый пример junit для функции - PullRequest
0 голосов
/ 26 мая 2020

У меня есть метод в классе, в котором я использовал механизм String Retry. И мой код:

@Override
    @Retryable(
            value={RuntimeException.class,IOException.class},
            maxAttempts=3,
            backoff=@Backoff(delay=5000)
            )
    public void sampleService(String payLoad, String type) throws HttpException, IOException
             {
        StringRequestEntity requestEntity = null;
        PostMethod postMethod = new PostMethod();
        HttpClient httpclient = new HttpClient();
        InputStream inputStream = null;
        int statusCode;
        BufferedReader br = null;
        String line;
        StringBuffer eventResponse = new StringBuffer();
        String jsonReceive = null;
        try{
            requestEntity = new StringRequestEntity(payLoad, MEDIA_TYPE, FORMAT);
            if (type.equalsIgnoreCase("item")) {
                postMethod = new PostMethod(baseServiceUrl + apiItemServiceUrl);
            } else if (type.equalsIgnoreCase("itemGroup")) {
                postMethod = new PostMethod(baseServiceUrl
                        + apiItemGroupServiceUrl);
            }
            postMethod.setRequestEntity(requestEntity);
            statusCode = httpclient.executeMethod(postMethod);
            log.info("Status code from item service call: " + statusCode);
            if (statusCode != 200) {
                throw new Exception("Error in service call");

            }
            inputStream = postMethod.getResponseBodyAsStream();
            if (null != inputStream) {
                br = new BufferedReader(new InputStreamReader(inputStream,
                        FORMAT));
                for (line = br.readLine(); line != null; line = br.readLine()) {
                    eventResponse = eventResponse.append(line);
                }
            }
        }
        catch(Exception e){
            log.info("Exception occurs " + e);
            throw new RuntimeException(
                    "Exception occurs " + e);
        }
            jsonReceive = eventResponse.toString();
            log.info("JsonReceive from the Service" + jsonReceive);


    }

Я хочу написать тестовый пример Junit для вышеуказанного метода и должен быть повторите попытку более одного раза, когда возникает исключение. Может ли кто-нибудь помочь мне написать тестовый пример ??

1 Ответ

0 голосов
/ 26 мая 2020

Если вы используете JUnit, вы можете связать операторы возврата, чтобы иметь разное поведение при каждом вызове, например:

when(httpclient.executeMethod(postMethod))
   .thenReturn(errorCode)
   .thenReturn(anotherErrorCode)
   .thenReturn(200)
...