JSON 문서를 서비스에 제출하는 웹 서비스 클라이언트에 대해 JUnit 테스트를 작성했습니다.assertEquals를 사용하여 비교할 때 동일한 JSON 문자열이 같지 않음
"올바른"JSON 문서를 파일에 저장 한 후 테스트 실행 후 실제 결과와 비교합니다.
라인이 동일하지만 그들은 일치하지 :
org.junit.ComparisonFailure:
Expected :{"Callback":null,"Data":
{"MarketCode":"ISEM",,............"Price":2.99}]}]}]}]}}
Actual :{"Callback":null,"Data":
{"MarketCode":"ISEM",,............"Price":2.99}]}]}]}]}}
라인에 대한 4K 문자, 매우 긴, 그래서 여기의 많은 부분을 잘라하지만, 그 길이는 동일하다. 나는 디버거에서 string.size()를 비교하고, 최종적으로 텍스트 편집기가 암시 적으로 삽입 할 수있는 보이지 않는 공백 심볼을 제거하기 위해 비교하기 전에 트림합니다.
또한 테스트는 독립적으로 실행하면 정상입니다. 하지만 더 큰 스위트 룸의 일부로 실행하면 실패합니다.
전역/정적 변수가 없으므로 메모리 무시가 문제가되지 않아야합니다. 나는이 같은 요청 문자열을 추출하는 웹 서비스 클라이언트를 조롱하고 있습니다 :
StringBuilder pd = new StringBuilder();
doAnswer((invocation) -> {
String postDocument = ((String)invocation.getArguments()[0]).trim();
pd.append(postDocument);
return null;
}).when(client).doPost(anyString(), anyObject());
클라이언트가 조롱 클래스입니다.
은 그럼 문자열의 버전을 손질 비교하지만 문제는 JSON 사양 자체입니다 :-) 자신을 대답 발견String expectedSubmit = TestUtils.readXmlFromFile("strategyexecution\\ireland_bm_strategy_override_expected.json").trim();
assertEquals(expectedSubmit, pd.toString().trim());
인코딩 문제 일 수 있습니까? 문자열을 별도의 파일에 기록하고 md5 또는 sha1 체크섬을 사용하여 실제 바이트가 동일한 지 확인할 수 있습니다. – inovaovao
[mcve]를 게시하십시오. assertEquals가 깨지지 않았습니다 –
Jenkins env에서 잘 실행됩니다. IntelliJ IDEA의 버그처럼 보입니다. IDEA에서만 실패하고 전체 스위트 (하나의 클래스 파일에서 분리 된 테스트가 아닌)가 실행될 때만 실패합니다 –