与Mac文件系统交互的IOS测试

与Mac文件系统交互的IOS测试,ios,swift,testing,xctestcase,Ios,Swift,Testing,Xctestcase,所以我在玩swiftui XCTESCASE。我有一系列的测试,它们运行在模拟器或设备上 但是-我现在需要与我所在的Mac进行交互-即从IOS测试读取和写入Mac文件系统-可能吗-因为测试正在模拟器中运行。XCTestCase在设计时有一些限制,可以访问本地文件系统。例如: func testExample()抛出{ 打印(“\(Bundle.allBundles)”) 打印(\(捆绑(用于:类型(属于:自身))) } 此代码将生成如下内容: [NSBundle(尚未加载)、NSBundle(

所以我在玩swiftui XCTESCASE。我有一系列的测试,它们运行在模拟器或设备上


但是-我现在需要与我所在的Mac进行交互-即从IOS测试读取和写入Mac文件系统-可能吗-因为测试正在模拟器中运行。

XCTestCase
在设计时有一些限制,可以访问本地文件系统。例如:

func testExample()抛出{
打印(“\(Bundle.allBundles)”)
打印(\(捆绑(用于:类型(属于:自身)))
}
此代码将生成如下内容:

[NSBundle(尚未加载)、NSBundle(加载)、NSBundle(尚未加载)、NSBundle(加载)]
NSBundle(已加载)
如您所见,这些路径与DerivedData目录相关。因此,您不能在项目或测试中使用目录的相对路径

此外,您还可以直接使用
FileManager
。它继承相同的环境,并且可以访问本地文件系统。例如:

func testExample()抛出{
让manager=FileManager.default
打印(尝试manager.contentsOfDirectory(路径:(“~/”为NSString.expandingTildeInPath))
}
它将产生如下结果:

/Users/USER\u NAME/Library/Developer/CoreSimulator/Devices/9CDF771B-204F-45B9-AAC3-6036AB7B17D/data/Containers/data/Application/0D16C376-80A6-4DAE-B435-2FEF7F08A83A
注意,由于环境的原因,它指向模拟器中用户的主目录

作为一种解决方法,我们使用共享用户目录来共享此类数据。测试预操作中有一个“运行脚本”,用于复制该脚本:

然后我们从
XCTestCase
访问它,如下所示:

尝试manager.contentsOfDirectory(路径:“/Users/Shared/TestData”)

这并不理想,也许还有其他一些解决办法。但是它工作正常,并且具有可预测的行为。

您需要访问Mac文件系统的具体用例是什么?