11

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

谢谢

4

4 回答 4

14

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

免责声明:此解决方案需要编辑系统文件。它对我有用,但可能会弄乱 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 包一起移动。

添加-RegisterForSystemEventsOTHER_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

在您运行测试时,模拟器一定不能运行。

我希望这些信息是完整的,如果某些东西没有按预期工作,请询问。

于 2011-07-12T07:45:02.330 回答
2

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

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

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

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

于 2012-07-27T17:56:22.117 回答
1

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

于 2011-12-07T19:56:26.747 回答
1

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

于 2012-09-25T15:02:37.793 回答