iOS单元测试问题小结

在写unit test的过程中遇到一些问题,记录一下。

xx.h file not found

  • 如果是给pod lib create创建的库写单元测试,检查Podfile中tests target有无如下配置。这样cocoapods会给test target设置search path。
   target 'xxTests' do
       inherit! :search_paths
    end

pod install之后,会发现Pods/Targets Support Files下面多了个Pods-xxx_Tests的文件夹,.xcconfig文件中配置了搜索路径。

  • 如果不是,需要在tests target的build setting中设置header search path

symbols not found

  1. 切到tests target的build settings,设置BUNDLE_LOADER=$(TEST_HOST),设置TEST_HOST= $(BUILT_PRODUCTS_DIR)/xx.app/xx (xx为host target名称)

  2. 切到host target的build settings,选择Symbols hidden by default为NO。

还有一种情况,如果podfile中是以use_framework的方式(即动态库),那么在引入头文件时需要使用,不然也会报symbol not found。

Library not loaded

在9.x的系统上发现会报错Library not loaded

Library not loaded: 
/System/Library/Frameworks/CallKit.framework/CallKit

test targetbuild phase -> link binary with library, 添加callkit,选择optional即可。

跑真机

真机跑单元测试需要选择证书,确保host target和test target的证书一致。

Unable to connect to test manager

重启手机后解决。

你可能感兴趣的:(iOS单元测试问题小结)