2011-07-06 13 views
0

junitテストの結果が「失敗」の場合、正確にはどういう意味ですか? テスト中に例外が発生したと思われますが、その情報が見つかりません。 も障害トレースの行は次のとおりです。Junitテスト:失敗は何ですか?

結果は単なるブールある
Assert.assertTrue(result); 

。だから私はどのように例外がこの行で発生する可能性があるか分からない。

+0

メッセージを指定することができますassertTrue( "結果は本当にあったはずです..."、結果) – 01es

答えて

3

Assert.assertTrue(結果);

resultがfalseの場合、このassertは失敗し、AssertionErrorを取得します。テストの作者は、結果が真であることを確認したい、そして偽であれば何かが間違っているので、上記のテスト対象のコードをチェックする必要があります。

+0

実際には、「失敗」とは対照的に「エラー」と呼ばれますが、 – clamp

0

JUnitテストが "Failed"の場合、UはAssertionExceptionを取得しています。あなたのケースの結果の手段は真実であったはずの偽りでした。

0

通常、失敗はアサーションが失敗したことを意味します。例外は別々に追跡されます(エラーの場合、iirc)。 documentationから

0

-

失敗は失敗したテストの説明と、それを実行中にスローされた例外を保持しています。ほとんどの場合、説明は単一のテストになります。ただし、テストの構築中に問題が発生した場合(たとえば、BeforeClassメソッドが静的でない場合など)は、単一のテスト以外のものを記述することがあります。

通常、failureは、テストの結果に関するあなたの主張が失敗したことを意味します。

0

これは、ブール変数の結果の値がfalseであることを意味します。

Assert.assertTrue(result); 

は、「結果」が真であるかどうかをチェックすることを意味します。メソッド名assertTrueに注意してください。テストケースは、result = trueの場合にのみ渡すことができます。それ以外の場合は、失敗とみなされます。

期待したことが得られないときは、失敗です。それは例外である必要はありません。もしあなたがXを返すコードルーチンを期待していて、あなたが得るものがYなら、失敗したテストケースです。

0

例外が発生したことを意味するものではなく、コードがテストがアサートした値以外の値を返したことを意味します。
Assert.asserFalse(result);
でコードを交換し、このテストは失敗していないかどうかを確認

2
ご質問は、両方がスローされた例外に対応して終わることから、「Failiure」と「エラー」の違いのようです

「失敗」は、テストで期待したことが起こらない場所です。で テストのように:あなたの計算(「何か」変数)の結果は、真でない場合、それはcomputeSomethingメソッドが動作しますが、期待できないとされていることを意味

TestedObject testedObject = new TestedObject(); // This is the object we test 
    boolean something = testedObject.computeSomething(); // The tested method 
    Assert.assertTrue("Something should be true", something); 
    // following of the test 

。これは「失敗」です。原因はおそらくメソッドの論理的なバグです。

computeSomething()メソッドが予期しない例外(計算中のNPEなど)をスローすると、メソッドが壊れている可能性がありますが、潜在的にはより残酷な方法ですコーナーケースは取り扱っていませんなど)。このメソッドには例外処理が必要です。これは、JUnit用語では「エラー」と呼ばれます。

どちらの場合も、メソッドが壊れていて、Exceptionが(コードまたはAssert.assertXXXメソッドによって)スローされ、TestRunnerによって捕捉されることを意味します。どちらの場合も、単に「テストが失敗している」と言っていることも珍しくありません。何が重要なのは、緑色のバーを戻すためにTestedObjectで実行する作業がいくつかあるからです。

はもちろん、時には、あなたのコードが実際に例外をスローすることをテストしたいので、あなたのようなものを記述します。

エラーでも失敗でもないの原因となる必要がある例外をスローこの場合
TestedObject testedObject = new TestedObject(); // This is the object we test 
    try { 
    // The tested method, that is expected to throw an Exeption when given null 
    boolean something = testedObject.computeSomething(null); 
    Assert.fail("The computation should have failed"); 
    } catch (IllegalArgumentException e) { 
    // Pass - This is the expected behavior 
    } 

。それとは逆に例外がでない場合は、でテストが失敗するはずです。

関連する問題