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

How do you run one XCTestCase subclass's test method from inside another XCTestCase subclass's test method in XCode 7?

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

我有一个销售点应用程序的测试套件。

我有一个名为 "MathTest" 的 XCTestCase 子类,它对应用程序的数学函数进行各种单元测试。它还有一个测试方法 testTillMath 检查寄存器以查看交易总额是否都符合预期值。

然后我有另一个名为 "TicketBuildingTest" 的 XCTestCase 子类,它有一个名为 testCreateTickets 的测试方法,它使用任何数据从 Excel 电子表格数据源中提取在电子表格中 assemble 将特定批次的交易存入特定于测试环境的特殊核心数据存储中。

只有 testCreateTickets 首先 运行 成功,testTillMath 方法才会成功。

如何让 testTillMathtestCreateTickets 完成后每次都得到 运行?

我尝试从 TicketBuildingTest 内部 #include MathTest.m 以便我可以在 testCreateTickets 结束时调用 testTillMath,但是XCode 不会让我这样做的。由于 "duplicate symbol _OBJC_CLASS_$_MathTest"

,构建失败并出现错误 "linker command failed with exit code 1"

我知道给这只猫剥皮的方法可能不止一种;在 PHPUnit 中,我可以指定一组测试方法 运行 全部按特定顺序排成一行,运行 在每个测试完成之前对每个测试进行测试。我怎样才能在 XCode 中做到这一点?

您故意引入了 "test pollution",即一个测试的成功或失败取决于另一个测试的成功或失败的情况。这是一种不好的做法。测试应该相互独立。这样你就知道当测试失败时,它失败是由于你的应用程序中专门测试的功能 - 所以你可以追踪该功能并修复它。调试测试污染是一个真正的考验,你应该不惜一切代价避免它。

一些测试框架(Rspec, for one; Cedar 另一个)随机化测试的顺序 运行,正是为了阻止您描述的那种测试耦合。