2016-04-16 6 views
1

実行中のテストでXCTAssertのいずれかが失敗したかどうかチェックできますか?私は、行のいくつかのアサーションを使用してテストを持っている、と私はそれらのいずれかが失敗した場合、特定のアクションを実行するために、その後いくつかのコードを追加したい:XCTestCaseテストが失敗したかどうかを確認する方法

class testClass : XCTestCase 
{ 
    func testSomething() 
    { 
     let someComputedValue1 = func1() 
     let someComputedValue2 = func2() 

     XCTAssertLessThanOrEqual(someComputedValue1, 0.5) 
     XCTAssertLessThanOrEqual(someComputedValue2, 0.2) 

     if anyOfTheAboveAssertionsFailed { 
      performAction() 
     } 
    } 
} 

私は上のヒントが欲しいの一部は、そのanyOfTheAboveAssertionsFailed条件でありますハードコードされた値との比較を複製する必要はありません。

答えて

1

...のようなテストを書くことができますいくつかのXCAssertメソッドを使用する必要がある場合は面倒です。

もう1つの方法は、continueAfterFailureを上書きすることです。障害がなければ、プロパティは要求されません。 1つがあれば、それはなります。 `FUNCのrecordFailure(withDescriptionの説明:文字列、INFILE filePathに:文字列、atLine LINENUMBER:INT、予想:ブール値)`あなたは同じ効果を代わりにオーバーライドすることができ、別のAPIがあります

class MyTest: XCTest { 
    private var hasFailed = false 
    override var continueAfterFailure: Bool { 
     get { 
      hasFailed = true 
      return super.continueAfterFailure 
     } 
     set { 
      super.continueAfterFailure = newValue 
     } 
    } 
    override func tearDown() { 
     if hasFailed { performAction() } 
     hasFailed = false 
    } 
} 
+0

気づきました。 –

0

あなたは、それは、もちろん...

func assertLessThanOrEqual(value: Double, limit: Double) -> Bool { 
    XCTAssertLessThanOrEqual(value, limit) 
    return value <= limit 
} 

を新しい関数を記述し、その後、独自のアサーションメソッドを使用すると、POの問題を解決するが

var allGood = true 
allGood = allGood && assertLessThanOrEqual(someComputedValue1, 0.5) 
allGood = allGood && assertLessThanOrEqual(someComputedValue2, 0.2) 

if !allGood { 
    performAction() 
} 
関連する問題