2017-11-13 9 views
0

나는 스칼라 테스트 케이스를 작성하고 그것을 통해 실행 한 :스칼라 테스트 결과의 차이점을 확인하는 방법은 무엇입니까?

sbt > test 

이 잘되는 실패합니다. 기본적으로 그냥 diff의 출력 문제가 있습니다.

[String] did not match [String] 

차이점을 찾기 위해 나에게 맡겨주십시오. Esp. 그들은 더 많은 단어-DIFF 같은 경험이없는을 제공 할 수 있도록 더 많은 사람이 읽을 수있는이 될 스칼라 시험을 구성 할 수있는 방법이 있나요

[info] List(CruisePrice(aid,de,Wed Feb 15 00:00:00 CET 2017,Wed Mar 01 00:00:00 CET 2017,sailId,2000,3000,true,2,0,0,0,1000,2500.0,3000.0,SOME_RATE_CODE,SOME_RATE_DESCRIPTION,EUR,Sun Jan 01 00:00:00 CET 2017), CruisePrice(aid,de,Wed Feb 15 00:00:00 CET 2017,Wed Mar 01 00:00:00 CET 2017,sailId,9001,3000,true,2,0,0,0,9000,2500.0,3000.0,SOME_RATE_CODE,SOME_RATE_DESCRIPTION,EUR,Sun Jan 01 00:00:00 CET 2017)) did not equal List(CruisePrice(aid,de,Wed Feb 15 00:00:00 CET 2017,Wed Mar 01 00:00:00 CET 2017,sailId,9001,3000,true,2,0,0,0,9000,2500.0,3000.0,SOME_RATE_CODE,SOME_RATE_DESCRIPTION,EUR,Sun Jan 01 00:00:00 CET 2017)) (OverrideTest.scala:104) 

Seq을 비교할 때 그것을 읽고 문제, 예를 찾기 어려워진다 거대한 텍스트 덩어리를 파싱해야합니까?

또는 다른 방법을 사용하여 주장 할 수 있습니까? 마찬가지로 지금 내가 함께 FlatSpec을 사용하고 있습니다 :

assert(seq1 == seq2) 
+0

유사 콘텐츠 https://stackoverflow.com/questions/7434762/comparing-collection-contents-with-scalatest?answertab=active#tab-top – k0pernikus

답변

0

두 문자열을 비교하는 assertEquals(obj1, obj2)를 사용할 수 있습니다. assertEquals는 비교를 위해 equals 메서드를 사용합니다. == 연산자를 사용하는 다른 assert, assertSame이 있습니다.

문자열에 ==를 사용하면 안되는 이유를 이해하려면 == 할 일이 무엇인지 이해해야합니다. 신원 확인을 수행합니다. 즉, a == b는 a와 b가 같은 객체를 참조하는지 확인합니다. 그것은 언어에 내장되어 있으며, 다른 클래스에 의해 그 동작을 변경할 수 없습니다. 한편, equals 메소드는 클래스에 의해 오버라이드 (override) 할 수 있습니다. Object 클래스의 기본 동작은 == 연산자를 사용하여 ID 확인을 수행하는 것이지만 String을 비롯한 많은 클래스가이를 대체하여 "동등성"검사를 대신 수행합니다. String의 경우 a와 b가 같은 객체를 참조하는지 확인하는 대신 a.equals (b)가 참조하는 객체가 모두 정확히 같은 문자를 포함하는 문자열인지 확인합니다.

+0

assertEquals가 어디에서 왔습니까? – k0pernikus

+0

assertEquals는 Assert 클래스의 한 메서드입니다. Assert (obj1.equals (obj2))를 사용할 수 있습니다. 자세한 내용은 http://junit.sourceforge.net/javadoc/org/junit/Assert.html을 참조하십시오. –