在发布版本期间运行Xcode单元测试

时间:2017-03-03 16:17:26

标签: swift xcode macos unit-testing

我有许多逻辑单元测试(我的项目文件具有App和AppTests的目标成员资格)。我想在我的构建系统中添加对xcodebuild test-without-building的调用,以便为每个构建运行我的单元测试。

但是,测试无法在发布版本上运行(因为版本不会为测试而构建)。

我唯一的选择是在构建期间构建发布版本调试版本,以便我只能使用调试版本来执行测试吗?这与我使用的其他测试框架(GTest,Catch)非常不同并且非常糟糕。为什么测试不能独立进行?

1 个答案:

答案 0 :(得分:2)

test-without-building命令实际上并不意味着在没有重建应用程序的情况下运行测试,而是它应该与build-for-testing一起使用命令。

有关详细信息,请参阅"Advanced Testing and Continuous Integration" WWDC 2016 session

要点是:使用build-for-testing构建一个.xctestrun文件,然后test-without-building使用该文件来运行测试。这对于在不同机器上运行大套件特别有用,尽管我自己从未这样做过。

既然我们已经确定您不能单独使用test-without-building,那么从命令行运行测试的唯一选择是,如果它们通过构建Release版本,则是使用xcodebuild test,即构建应用程序。

至于为什么需要在Debug,我没有准确的答案。在iOS领域,至少在我合作过的团队中,DebugRelease构建之间的区别总是只有在优化方面传递给编译器的选项之类的东西,构建的架构,以及代码签名的类型。

这意味着在Debug vs Release中运行的代码完全相同,因为我们已经确定您需要构建应用程序两次,一次运行测试,一个生成可释放版本,在Debug中运行测试似乎是可以接受的。