2011-08-02 10 views
2

assertequalsが2つの文字列の間にある場合は、 。私は、私もfailNotEquals(String1、String2)を発して、比較オプションも出てくると信じています。オブジェクトがequalsを実装していない場合や、自分自身のルールを使って同等かどうかを比較したい場合や、失敗した場合は失敗する可能性があります。しかし、私はここ数回気付いたことがありますが、時にはfailNotequals(String、String)は "compare"オプションを有効にしません。私は何かを逃している???Eclipse JUNIT:assertequals(String、String)が失敗したときに時々比較を行うことは可能ですが、必ずしもそうではありません

比較オプションの比較 >比較<オプションは、guiから失敗したjunitアイテムを右クリックして各「テスト」の項目を含むツリーを作成するときに使用できるメニューオプションです。多くの場合、>プリントスタックトレース<オプションもあります。私はあなたが「比較」オプション

に有効になりません

failNotEqualsによって何を意味するのか全くわからない

答えて

-1

は、ここで思考のカップルです。

  1. failNotEquals 3つの引数ではなく、2取る:

    failNotEqualsを(メッセージ、予想される、実際の);

  2. 文字列が同じものを出力しても、それらは同じオブジェクトではありません。 JUnitにそれらの比較方法を伝える必要があります。

この小さな動作テストケースを検討してください。

import junit.framework.TestCase; 

public class DemoTest extends TestCase { 
    public void testSomething() { 
    String a = "Hello"; 
    assertTrue("Strings should be the same", "Hello".equals(a)); 
    failNotEquals("Strings should be the same", "Hello", a); 
    } 
} 

assertTrueは機能しますが、failNotEqualsは機能しません。

assertTrueはおそらくあなたが望むものです。 "Hello".equals(a)は、文字列を適切に比較します。ここでequalsIgnoreCaseを使用することもできます。

私は、failNotEqualsがおそらく使用しているものに近いと推測しています。 java.lang.IllegalAccessErrorで失敗します。

+0

実際にasssertTrueを使用するのは、テストが失敗した場合には、*間違った*文字列が含まれているため、assertequalsを使用する必要があります。 asserttrueを使用することについての解説はごまかす - より良い選択肢は、(a.equalsIgnoreCase(b)){failNotequals( "message goes here"、a、b)であり、意味のあるメッセージとの違いを示しています。 –

+0

私はあなたがポイント#2を挙げたとは考えていません。あなたが私のqを読んだら、明らかに私は自分自身の比較を行い、テストが失敗した場合にはfailNotequalsを呼び出します。 assertEquals()はまったく同じことをします。 –

2

テストの最終結果がjunit.framework.ComparisonFailureオブジェクトの場合は、「比較」オプションが表示されます。その場合、2つのオブジェクト(例えばStrings)の視覚的な比較を確認し、それらが互いにどのように異なるかを確認することができます。 Eclipseは知らない(と推測することはできません)のようなjava.lang.IllegalAccessErrorとして結果の

他の種類は、あなたがそのようにつながる2つのオブジェクトを比較したことが、その効果には解析されません結果、それはあなたに同じ視覚的利益を提供しません。

関連する問題