我有许多逻辑单元测试(我的项目文件具有App和AppTests的目标成员资格)。我想在我的构建系统中添加对xcodebuild test-without-building的调用,以便为每个构建运行我的单元测试。
但是,测试无法在发布版本上运行(因为版本不会为测试而构建)。
我唯一的选择是在构建期间构建发布版本和调试版本,以便我只能使用调试版本来执行测试吗?这与我使用的其他测试框架(GTest,Catch)非常不同并且非常糟糕。为什么测试不能独立进行?
答案 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领域,至少在我合作过的团队中,Debug
和Release
构建之间的区别总是只有在优化方面传递给编译器的选项之类的东西,构建的架构,以及代码签名的类型。
这意味着在Debug
vs Release
中运行的代码完全相同,因为我们已经确定您需要构建应用程序两次,一次运行测试,一个生成可释放版本,在Debug
中运行测试似乎是可以接受的。