白盒测试 Jenkins 集成 xctool 执行 iOS 单元测试模拟器无法启动

小明 · 2015年02月08日 · 最后由 Bluelipper 回复于 2016年09月26日 · 1554 次阅读

环境:
Jenkins 搭建在 Mac 服务器上面,安装在 tomcat 当中以 webapp 方式启动。
mac 系统版本:10.9.4
xctool 版本:0.2.2
jenkins 版本:1.598

现象:
在 mac 本机执行测试通过,使用 jenkins shell 方式执行失败,模拟器启动后显示黑屏。

测试命令:
xctool -project Sample.xcodeproj -scheme SampleTests -sdk iphonesimulator test -freshInstall -freshSimulator

错误日志如下:

--------------------------------------------------------------------------------
iOS deployment target '8.1' for architecture 'i386' and variant 'normal' is greater than the maximum value '8.0.99' for the Simulator - iOS 8.0 SDK.
--------------------------------------------------------------------------------
      ~ Write auxiliary files (3 ms)
--------------------------------------------------------------------------------
/bin/mkdir -p /Users/wangmy/Library/Developer/Xcode/DerivedData/Sample-haasvciuwqzzcociidumavsvdwoo/Build/Intermediates/Sample.build/Debug-iphonesimulator/SampleTests.build
write-file /Users/wangmy/Library/Developer/Xcode/DerivedData/Sample-haasvciuwqzzcociidumavsvdwoo/Build/Intermediates/Sample.build/Debug-iphonesimulator/SampleTests.build/SampleTests-project-headers.hmap
write-file /Users/wangmy/Library/Developer/Xcode/DerivedData/Sample-haasvciuwqzzcociidumavsvdwoo/Build/Intermediates/Sample.build/Debug-iphonesimulator/SampleTests.build/SampleTests-generated-files.hmap
write-file /Users/wangmy/Library/Developer/Xcode/DerivedData/Sample-haasvciuwqzzcociidumavsvdwoo/Build/Intermediates/Sample.build/Debug-iphonesimulator/SampleTests.build/SampleTests-all-target-headers.hmap
write-file /Users/wangmy/Library/Developer/Xcode/DerivedData/Sample-haasvciuwqzzcociidumavsvdwoo/Build/Intermediates/Sample.build/Debug-iphonesimulator/SampleTests.build/SampleTests-own-target-headers.hmap
write-file /Users/wangmy/Library/Developer/Xcode/DerivedData/Sample-haasvciuwqzzcociidumavsvdwoo/Build/Intermediates/Sample.build/Debug-iphonesimulator/SampleTests.build/SampleTests.hmap
write-file /Users/wangmy/Library/Developer/Xcode/DerivedData/Sample-haasvciuwqzzcociidumavsvdwoo/Build/Intermediates/Sample.build/Debug-iphonesimulator/SampleTests.build/SampleTests-all-non-framework-target-headers.hmap
/bin/mkdir -p /Users/wangmy/Library/Developer/Xcode/DerivedData/Sample-haasvciuwqzzcociidumavsvdwoo/Build/Intermediates/Sample.build/Debug-iphonesimulator/SampleTests.build/Objects-normal/i386
write-file /Users/wangmy/Library/Developer/Xcode/DerivedData/Sample-haasvciuwqzzcociidumavsvdwoo/Build/Intermediates/Sample.build/Debug-iphonesimulator/SampleTests.build/Objects-normal/i386/SampleTests.LinkFileList
--------------------------------------------------------------------------------
      ~ Create product structure (0 ms)
--------------------------------------------------------------------------------
/bin/mkdir -p /Users/wangmy/Library/Developer/Xcode/DerivedData/Sample-haasvciuwqzzcociidumavsvdwoo/Build/Products/Debug-iphonesimulator/SampleTests.xctest
--------------------------------------------------------------------------------
      ~ Process Info.plist (3 ms)
      ~ Compile CSSTests.mm (1461 ms)
      ~ Compile HistoryManageTests.mm (1002 ms)
      ~ Compile RenderTests.mm (1260 ms)
      ~ Compile ERTLuaCoreUnitTests.mm (616 ms)
      ~ Compile ERTCoreTests.mm (346 ms)
      ~ Link SampleTests (30 ms)
      ~ Generate SampleTests.xctest.dSYM (53 ms)
      ~ Touch SampleTests.xctest (2 ms)
      0 errored, 1 warning (1566 ms)


  [Info] Collecting info for testables... (1584 ms)
  run-test SampleTests.xctest (iphonesimulator8.0, application-test)
    [Warning] Tried to install the test host app 'net.light.sample' but failed. (63 ms)
    [Info] Preparing test environment failed; will retry 2 more times (0 ms)
    [Info] Verified iOS Simulators... (0 ms)
    [Info] Shut down iOS Simulator... (0 ms)
    [Info] Stopped any existing iOS simulator jobs to get a fresh simulator. (123 ms)
    [Info] Reset iOS simulator content and settings at path "/Users/wangmy/Library/Developer/CoreSimulator/Devices/2EE9285F-1031-4A63-BE94-F1395C79C083/data" (541 ms)
    [Warning] Tried to install the test host app 'net.light.sample' but failed. (15 ms)
    [Info] Preparing test environment failed; will retry 1 more time (0 ms)
    [Info] Verified iOS Simulators... (0 ms)
    [Info] Shut down iOS Simulator... (0 ms)
    [Info] Stopped any existing iOS simulator jobs to get a fresh simulator. (128 ms)
    [Info] Reset iOS simulator content and settings at path "/Users/wangmy/Library/Developer/CoreSimulator/Devices/2EE9285F-1031-4A63-BE94-F1395C79C083/data" (592 ms)
    [Warning] Tried to install the test host app 'net.light.sample' but failed. (15 ms)
    [Warning] Preparing test environment failed. (0 ms)
      -[TEST_BUNDLE FAILED_TO_START]
--------------------------------------------------------------------------------
There was a problem starting the test bundle: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[TEST_BUNDLE FAILED_TO_START] (0 ms) (0)
      -[CSSTests testCSSCreate]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[CSSTests testCSSCreate] (0 ms) (1)
      -[CSSTests testCSSParser]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[CSSTests testCSSParser] (0 ms) (2)
      -[CSSTests testColorParser]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[CSSTests testColorParser] (0 ms) (3)
      -[CSSTests testPerformanceExample]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[CSSTests testPerformanceExample] (0 ms) (4)
      -[ERTCoreTests testExample]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[ERTCoreTests testExample] (0 ms) (5)
      -[ERTCoreTests testPerformanceExample]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[ERTCoreTests testPerformanceExample] (0 ms) (6)
      -[HistoryManageTests testHistoryManage]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[HistoryManageTests testHistoryManage] (0 ms) (7)
      -[RenderTests testCreateRender]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[RenderTests testCreateRender] (0 ms) (8)
      -[RenderTests testPerformanceExample]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[RenderTests testPerformanceExample] (0 ms) (9)
      -[RenderTests testRenderTree]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[RenderTests testRenderTree] (0 ms) (10)
      -[RenderTests testSetInnerHtml]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
----|---------------------------------------------------------------------------
    X -[RenderTests testSetInnerHtml] (0 ms) (11)
    0 passed, 0 failed, 12 errored, 12 total (1 ms)


Failures:

  0) -[TEST_BUNDLE FAILED_TO_START] (SampleTests.xctest)
--------------------------------------------------------------------------------
There was a problem starting the test bundle: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  1) -[CSSTests testCSSCreate] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  2) -[CSSTests testCSSParser] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  3) -[CSSTests testColorParser] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  4) -[CSSTests testPerformanceExample] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  5) -[ERTCoreTests testExample] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  6) -[ERTCoreTests testPerformanceExample] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  7) -[HistoryManageTests testHistoryManage] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  8) -[RenderTests testCreateRender] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  9) -[RenderTests testPerformanceExample] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  10) -[RenderTests testRenderTree] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

  11) -[RenderTests testSetInnerHtml] (SampleTests.xctest)
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.
--------------------------------------------------------------------------------

** TEST FAILED: 0 passed, 0 failed, 12 errored, 12 total ** (77259 ms)
共收到 15 条回复 时间 点赞

@mingyuwang have you fixed? I have just met the same problem :(

小明 #14 · 2015年02月09日 Author

#12 楼 @chenhengjie123

✓ -[RenderTests testSetInnerHtml] (1 ms)
    11 passed, 0 failed, 0 errored, 11 total (845 ms)
小明 #13 · 2015年02月09日 Author

#12 楼 @chenhengjie123 执行正常的 shell 输出:

[Info] Collecting info for testables... (1402 ms)
  run-test SampleTests.xctest (iphonesimulator8.0, application-test)
    [Info] Verified iOS Simulators... (0 ms)
    [Info] Shut down iOS Simulator... (273 ms)
    [Info] Stopped any existing iOS simulator jobs to get a fresh simulator. (125 ms)
    [Info] Uninstalled 'net.light.sample' to get a fresh install. (2866 ms)
    [Info] Installed 'net.light.sample'. (881 ms)
    [Info] Launching test host and running tests ... (0 ms)

@mingyuwang 能把正常跑得通的 log 贴上来一下吗?到

----|---------------------------------------------------------------------------
    X -[TEST_BUNDLE FAILED_TO_START] (0 ms) (0)
      -[CSSTests testCSSCreate]
--------------------------------------------------------------------------------
Test did not run: Simulator 'iPhone 4s' was not prepared: Failed for unknown reason.

这里就可以了。
估计还是因为 jenkins 建立的 shell 和你能执行成功的 shell 部分配置不一样。

小明 #11 · 2015年02月09日 Author

#10 楼 @chenhengjie123 有做 Shared Schemes ,这个是 xcode 里面配置好的,直接获取源码就有

@mingyuwangxctool找到一段说明
In order to your run your tests within a continuous integration environment, you must create Shared Schemes for your application target and ensure that all dependencies (such as CocoaPods) are added explicitly to the Scheme
这一部分有做了吗?

#7 楼 @chenhengjie123 用户和本地使用的是相同的,都是管理员用户

#6 楼 @beerbox No,版本不兼容的话,本地是运行不起来的

会不会是由于 jenkins 里面使用的用户不一样?用户不一样会导致各种设置不一样的。我在 windows 下用 jenkins 经常遇到这个问题,本地跑得好好的脚本去到 jenkins 各种报错。但 mac 里面没用过,不是很清楚是不是也是一样的。

锅锅,你版本不兼容啊,你仔细读下第一句。iOS deployment target '8.1' for architecture 'i386' and variant 'normal' is greater than the maximum value '8.0.99' for the Simulator - iOS 8.0 SDK.

#3 楼 @doctorq 不是这个意思,是在 mac 本地执行是一直通过的,但是通过 ssh 和 jenkins 是一直不通过,两种情况下的结果不同。主要想问一下有没有人碰到类似的问题,有没有什么解决的思路。

#2 楼 @mingyuwang 这个不能这么暗示自己,不是说一次执行成功,就说明它应该成功,这就是 bug 存在的原因。感觉是你的远程集成环境中启动模拟器没弄好,既然知道原因,可以仔细检查下。

#1 楼 @doctorq 本地执行是可通过的,就是能启动模拟器执行测试的,但是通过 ssh 和 jenkins 就会失败。

不太懂 ios 测试,但是你上面的出错信息说的是你的应用没有安装

Tried to install the test host app 'net.light.sample' but failed
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册