如何在XCode 7中的另一个XCTestCase子类的测试方法中运行一个XCTestCase子类的测试方法?

时间:2016-04-14 19:24:46

标签: objective-c xcode unit-testing xcode7 xctest

如何在XCode 7中的另一个XCTestCase子类的测试方法中运行一个XCTestCase子类的测试方法?

我有一个针对我的销售点应用的测试套件。

我有一个名为“MathTest”的XCTestCase子类,它对应用程序的数学函数进行了各种单元测试。它还有一个测试方法 testTillMath ,它检查寄存器以查看事务总计是否与预期值匹配。

然后我有另一个名为“TicketBuildingTest”的XCTestCase子类,它有一个名为 testCreateTickets 的测试方法,它从Excel电子表格数据源中提取,使用电子表格中的任何数据来组合特定的一批事务进入特定于测试环境的特殊Core Data存储。

testTillMath 方法只有在首次成功运行 testCreateTickets 时才会成功。

每次 testCreateTickets 完成后,如何让 testTillMath 运行?

我尝试从TicketBuildingTest内部#include MathTest.m,以便我可以在 testCreateTickets 结束时调用 testTillMath ,但XCode不会让我这样做包括。由于“重复符号_OBJC_CLASS _ $ _ MathTest”,构建失败并显示错误“链接器命令因退出代码1而失败”

我意识到这种猫可能不止一种方法;在PHPUnit中,我可以指定一组测试方法,这些测试方法以一定的顺序连续运行,在完成之前运行每个测试。我怎么能在XCode中做到这一点?

1 个答案:

答案 0 :(得分:2)

您故意引入“测试污染”,即一次测试的成功或失败取决于另一项测试的成功或失败的情况。这是一种不好的做法。测试应该相互独立。这样您就知道,当测试失败时,由于您的应用程序中的功能正在进行测试而失败,因此您可以跟踪该功能并进行修复。调试测试污染是一个真正的考验,你应该不惜一切代价避免它。

一些测试框架(Rspec,一个; Cedar另一个)随机化运行测试的顺序,正好阻止您描述的测试耦合类型。