2017-11-13 7 views
0

私はScalaのテストケースを書いて、それを通じ実行した:どのようにスカラテストの結果の違いを参照してください?

sbt > test 

それは罰金である、失敗します。私は基本的にはちょうど同じようにdiffの出力に問題があります:

[String] did not match [String] 

私はそれを私に任せて違いを見つけることができます。 Esp。 2 Seqを比較するときには、例えば、問題を読み、見つけるのは難しいようになります。

[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) 

は、彼らがなく、より単語-diffのような体験を提供するように読めるより人間になるためにScalaのテスト用に設定する方法はあります巨大なテキストを解析する必要がありますか?

また、別の方法でアサートすることはできますか?今、私はFlatSpecを使用しています:

assert(seq1 == seq2) 
+0

類似したhttps://stackoverflow.com/questions/7434762/comparing-collection-contents-with-scalatest?answertab=active#tab-top – k0pernikus

答えて

0

次の2つの文字列を比較するためにassertEquals(obj1, obj2)を使用することができます。 assertEqualsは比較のためにequalsメソッドを使用します。 ==演算子を使用する異なるassert assertSameがあります。

文字列に==を使用してはならない理由を理解するには、==が何をするかを理解する必要があります。それはアイデンティティチェックを行います。つまり、a == bは、aとbが同じオブジェクトを参照しているかどうかを調べます。それは言語に組み込まれており、その動作は異なるクラスによって変更することはできません。一方、equalsメソッドはクラスによってオーバーライドできます。デフォルトの動作(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を参照してください。 –

関連する問題