Assert.fail()とAssert.assertFalse()

3536 ワード

QueryモジュールTest Caseは、一連の異常テストがあり、その中の一つを選択し、分析を行い、主にAssertクラスの用法であり、コードは以下の通りである.
 
このコードは主にgetQueryDataメソッドを使用する場合、パラメータidをチェックします(無効または不正なidの場合、異常情報が放出されます).
	@Test
	public void queryWithInvalidID() {		
		log.info("Enter GetQueryDataTest queryWithInvalidID()");
		
		try {	
			log.info("Try to getQueryData");
			dcmAPI.getQueryData(-1,  QueryType.AVG_PWR, AggregationLevel.SELF, startTime,
					oneCycleEndTime, FREQUENCY);
			log.info("getQueryData finished");
			Assert.fail("Should get exception here!");
		} catch (Exception e) {
			Assert.assertFalse("Should not get exception "
					+ e.getClass().getSimpleName() + ": " + e.getMessage(),
					Utilities.isNotExceptedException(e,
							"DcmIllegalIdException", null));
		}
		
		log.info("Exit GetQueryDataTest queryWithInvalidID()");
	}

 
 
名前の説明
Assert.Fail ()
いかなる条件もチェックしないで断言を失敗させる.
Assert.Fail (String)
いかなる条件もチェックしないで断言を失敗させる.メッセージを表示します.
Assert.Fail (String, Object[])
いかなる条件もチェックしないで断言を失敗させる.メッセージが表示され、指定したフォーマットが適用されます.
 
 

fail public static void fail(java.lang.String message) Fails a test with the given message. Parameters: message - the identifying message for the AssertionError (null okay) See Also: AssertionError  

assertFalse
public static void assertFalse(java.lang.String message,
                               boolean condition)
Asserts that a condition is false. If it isn't it throws an AssertionError with the given message. 
 

Parameters: 
message - the identifying message for the AssertionError (null okay) 
condition - condition to be checked

 
 
 
以上の2つの方法の用法説明はhttp://junit.org/apidocs/org/junit/Assert.htmlから抜粋した.
 
簡単な説明:
Assert.Fail(String):文を実行すると、断言を直接失敗させ、カッコ内のStringパラメータを直接表示します.
assertFalse(java.lang.String message,boolean condition):パラメータconditionがfalseであるか否かを判断し、このパラメータ値がtrueである場合、パラメータmessage値を含む異常情報を放出する.
 
 
 
次に、上記のテストコードを分析します.
 
1.Assert.fail("Should get exception here!");
上のコードによって
dcmAPI.getQueryData(-1,  QueryType.AVG_PWR, AggregationLevel.SELF, startTime,oneCycleEndTime, FREQUENCY);

パラメータ-1、異常が発生したはずです.tryコードブロックからcatchコードブロックに飛び出しました.意外にもこの文まで来ました.問題があるので、断言を直接失敗させ、エラーメッセージを印刷します.「Should get exception here!」
 
 
2.
			Assert.assertFalse("Should not get exception "
					+ e.getClass().getSimpleName() + ": " + e.getMessage(),
					Utilities.isNotExceptedException(e,
							"DcmIllegalIdException", null));

ここで取得した異常情報eが我々が望む異常でない場合、Utilities.isNotExceptedException()の戻り結果がtrueであると断言に失敗し、異常情報「Should not get exception」+eが印刷されます.つまり、ここではeという異常情報をキャプチャすべきではありません(DcmIllegalIdExceptionをキャプチャすべきです)