第一次STAssert失败后,SenTesting停止测试

时间:2012-06-05 06:01:58

标签: iphone ios unit-testing sentestingkit

一旦第一次STAssert失败,有没有办法停止执行iOS单元测试?

例如,如果我有多个STAsserts:

STAssertTrue([myobject succeeded], @"failed");
STAssertNotNil(foo,@"bar");

如果Xcode在第一个失败后停止执行测试,我会很高兴。有什么办法吗?

3 个答案:

答案 0 :(得分:1)

如果为所有异常设置了异常断点,Xcode将在第一次失败的测试时抛出调试器。如果你在Xcode中手动运行测试,这可能是可以接受的。

在Xcode 4 +

中设置异常断点
  1. 查看>导航器>显示断点导航器
  2. 单击Breakpoint Navigator窗口左下角的+按钮,选择“Add Exception Breakpoint”
  3. 点击显示的弹出窗口中的“完成”。
  4. Xcode将在应用程序运行时遇到的任何异常中断到调试器。

答案 1 :(得分:0)

如果将以下方法添加到测试类中,任何失败的STAssert语句都将停止执行测试方法。

- (void)failWithException:(NSException *)anException{
  [super failWithException:anException];
  NSAssert(false, @"An assertion has failed");
}

答案 2 :(得分:0)

SenTestCase有一个方法-[SenTestCase raiseAfterFailure],导致STAssert...在完成时抛出异常,阻止测试中的下一行执行。

您可以逐个测试地执行此操作:

- (void)testSomeStuff
{
    [self raiseAfterFailure];
    STAssertTrue([myobject succeeded], @"failed");
    STAssertNotNil(foo,@"bar");
}

或在班级:

- (void)setUp
{
    [super setUp];
    [self raiseAfterFailure];
}