Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios XCTest是否在主线程中执行?如何执行?_Ios_Xctest - Fatal编程技术网

Ios XCTest是否在主线程中执行?如何执行?

Ios XCTest是否在主线程中执行?如何执行?,ios,xctest,Ios,Xctest,我正在编写一个支持核心数据的iOS应用程序。我首先编写核心数据代码,然后用AppDelegate的方法直接测试它们。有了初始工作代码后,我决定将核心数据测试代码移到XCTest。这是我第一次使用XTest,我以为测试是在一个独立的进程中运行的,而不是在iOS应用程序中运行的,但事实显然不是这样。例如,测试可以访问应用程序设置的托管对象上下文 所以我的问题是XCEST在哪个线程中运行?是主线吗?我的实验似乎表明了这一点。例如,在主线程中创建的测试访问对象(例如AppDelegate实例和Xcode

我正在编写一个支持核心数据的iOS应用程序。我首先编写核心数据代码,然后用AppDelegate的方法直接测试它们。有了初始工作代码后,我决定将核心数据测试代码移到XCTest。这是我第一次使用XTest,我以为测试是在一个独立的进程中运行的,而不是在iOS应用程序中运行的,但事实显然不是这样。例如,测试可以访问应用程序设置的托管对象上下文

所以我的问题是XCEST在哪个线程中运行?是主线吗?我的实验似乎表明了这一点。例如,在主线程中创建的测试访问对象(例如AppDelegate实例和Xcode)不会对此抱怨。如果是这样,我想知道是谁安排测试在主线程中运行,以及如何安排

我在console中看到如下日志,但它们没有指出底层细节

2020-01-13 11:34:38.212244+0800 ... Launching with XCTest injected. Preparing to run tests.
2020-01-13 11:34:38.559808+0800 ... Waiting to run tests until the app finishes launching.
谢谢你的帮助

我原以为测试是在一个独立的进程中运行的,而不是在iOS应用程序中运行的,但事实显然并非如此。例如,测试可以访问应用程序设置的托管对象上下文

这些测试以捆绑方式注入到应用程序中。反过来,测试将应用程序视为一个捆绑包;这就是为什么要将应用程序导入测试。这与UITests不同,UITests中的应用程序在单独的应用程序运行程序环境中运行

所以我的问题是XCEST在哪个线程中运行?是主线吗?我的实验似乎表明了这一点。例如,在主线程中创建的测试访问对象(例如AppDelegate实例和Xcode)不会对此抱怨。如果是这样,我想知道是谁安排测试在主线程中运行,以及如何安排


一切都在主线程上运行。现在还不清楚你会遇到什么困难,或者会有什么惊喜。应用程序运行,代码运行,测试就是其中的一部分。

@mattt感谢您的回复。我的困惑是XCTest是如何在主线程中被调用的,我的意思是,谁启动了测试运行?在主线程中执行的代码必须在UI初始化的直接或间接回调中执行代码回调可能是一个不好的术语,但希望您明白我的意思。我看不出XCTest是如何从主线程中调用的。那么,当在主线程上调用表视图委托时,谁调用它?对于委托,我认为它们是由委托对象的代码调用的。由于用户事件(由主线程中的事件循环调度)而调用委托对象方法。我就是这样理解的。我的问题是XCTest的调用是如何集成到这个机制中的。框架在主线程上安排测试,测试在启动结束和运行循环周期结束时运行。谢谢。我就是这么想的。但如果没有我的实验和讨论,这对我来说并不明显。我很惊讶苹果的文档中没有提到这一点。