5

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

例如,如果我有多个 STAssert:

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

如果 Xcode 在第一个测试失败后简单地停止执行测试,我会喜欢它。有什么办法可以做到这一点?

4

3 回答 3

1

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

在 Xcode 4+ 中设置异常断点

  1. 视图 > 导航器 > 显示断点导航器
  2. 单击 Breakpoint Navigator 窗口左下方的 + 按钮,选择“Add Exception Breakpoint”
  3. 在出现的弹出窗口中单击“完成”。

Xcode 将在应用程序运行时遇到任何异常时中断调试器。

于 2013-09-09T09:36:30.240 回答
0

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

- (void)failWithException:(NSException *)anException{
  [super failWithException:anException];
  NSAssert(false, @"An assertion has failed");
}
于 2013-09-11T18:11:06.817 回答
0

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

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

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

或在班级级别:

- (void)setUp
{
    [super setUp];
    [self raiseAfterFailure];
}
于 2013-10-02T16:59:34.797 回答