【问题标题】:OCUnit Application Test with Simulator in terminal在终端中使用模拟器进行 OCUnit 应用程序测试
【发布时间】:2011-09-29 14:49:47
【问题描述】:

是否可以使用终端命令启动在模拟器中运行的应用程序测试?

谢谢

【问题讨论】:

    标签: objective-c xcode unit-testing ios-simulator ocunit


    【解决方案1】:

    是的,我让它工作了。我的解决方案有点粗糙,可能并不适合所有情况。

    免责声明:此解决方案需要编辑系统文件。它适用于 我,但可能会弄乱 XCode 的单元测试堆栈,特别是如果你 不明白你在做什么。

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools/RunPlatformUnitTests 替换

    if [ "${TEST_HOST}" != "" ]; then
    
        Warning ${LINENO} "Skipping tests; the iPhoneSimulator platform does not currently support application-hosted tests (TEST_HOST set)."
    
    else
    

    if [ "${TEST_HOST}" != "" ]; then
    
        mkdir -p "${BUILT_PRODUCTS_DIR}/Documents"
        mkdir -p "${BUILT_PRODUCTS_DIR}/Library/Caches"
        mkdir -p "${BUILT_PRODUCTS_DIR}/Library/Preferences"
        mkdir -p "${BUILT_PRODUCTS_DIR}/tmp"
    
        export CFFIXED_USER_HOME="${BUILT_PRODUCTS_DIR}/"
    
        RunTestsForApplication "${TEST_HOST}" "${TEST_BUNDLE_PATH}"
    else
    

    您可以将固定用户的家移动到不同的位置,但我认为您需要将 .app 和 .octest 包一起移动。

    -RegisterForSystemEvents 添加到您的测试包的OTHER_TEST_FLAGS 构建设置中。

    确保您的测试包包含包含内容的运行脚本构建阶段

    # Run the unit tests in this test bundle.
    "${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"
    

    为您的测试创建一个新方案。

    您应该能够使用标准 xcodebuild 从命令行运行测试:

    xcodebuild -workspace $(WORKSPACE_NAME).xcworkspace -scheme $(TEST_SCHEME) -configuration debug -sdk iphonesimulator

    模拟器一定不能运行,当时你要运行什么测试。

    我希望这些信息是完整的,如果有什么不按预期工作,请询问。

    【讨论】:

    • 我试试看。会让你知道的。
    • 我试过了。我得到以下结果:'xcodebuild:错误:无法使用方案 TestScheme 构建工作区项目。原因:方案“TestScheme”未配置为启动。'。你遇到过这个问题吗?在 Xcode 本身中,我只能使用“cmd-u”执行测试,而不能使用“cmd-r”(运行命令)。
    • 已经知道了。编辑了错误的“RunPlatformUnitTests”文件。可以使用 UI 元素运行测试并通过。我没有看到模拟器,模拟器是从你的“版本”开始的吗?还是应用程序测试只是在没有模拟器的情况下运行?
    • 它们在模拟器中运行,但没有显示模拟器UI和App-Icon。
    • 嘿,还有一件事,有没有办法用这个选项运行单个测试套件?
    【解决方案2】:

    你可以确保模拟器没有运行这个:

    osascript -e 'tell app "iPhone Simulator" to quit'

    您可以通过以下方式确定模拟器是否处于活动状态:

    sh -c 'ps -xaco command | grep "iPhone Simulator"'

    【讨论】:

      【解决方案3】:

      完美运行,谢谢! 自动化测试在我们的 Jenkins CI 服务器上重新投入使用! 只需要修复我的TEST_HOST=${BUNDLE_LOADER}。如果您在运行测试时收到有关“没有此类文件”的错误,请执行此操作。

      【讨论】:

      • 改成什么?我将 TEST_HOST 留空,这对我有用。
      【解决方案4】:

      现在 Xcode 4.5GM 似乎支持在模拟器中运行应用程序测试了。

      【讨论】:

      • 来自 Xcode,但不使用 xcodebuild,因为 RunPlatformUnitTests 脚本尚未更新。
      • 仍然没有改变这样一个事实,即开箱即用的应用程序测试在使用“xcodebuild”时不起作用。它们在 Xcode 中运行良好。 SDK 无关紧要。
      • 你是对的。奇怪的是,与早期的 SDK 相比,构建应用程序测试目标不会引发任何错误或警告消息......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      相关资源
      最近更新 更多