‘NSInternalInconsistencyException’ when 运行 UITesting with Xcode 7

‘NSInternalInconsistencyException’ when running UITesting with Xcode 7

好的,到目前为止,我无法在任何测试版中 运行 进行此测试。我遇到的一些问题是 and here

现在,我觉得我错过了什么。

这是我目前的进度

  1. 创建新项目时启用“UI 测试”选项。这,其实是给我增加了一个目标。所以我应该可以走了——至少我是这么想的。
  2. swift测试下的swift文件已经导入了“XCTest”,是“XCTestCase”的子类。
  3. setup() 启动应用程序 XCUIApplication().launch()
  4. 然后我添加了以下内容(通过点击“录制”按钮)

然后,我运行这个测试。

整个事情甚至在调用测试之前就失败了,就在使用以下

在 setup() 中启动应用程序之后

*** Assertion failure in -[XCUIApplication init], /Library/Caches/com.apple.xbs/Sources/XCTest_Sim/XCTest-8170.3/XCTestFramework/UI Testing/XCUIApplication.m:76 /Users/UserName/Documents/Projects/Testing/UiTesting/UITestingApp/UITestingApp.swift:0: error: -[UITestingApp.UITestingApp testSimpleTap] : failed: caught "NSInternalInconsistencyException", "No target application path specified via test configuration:
testBundleURL:file:///Users/UserName/Library/Developer/CoreSimulator/Devices/E3201DC2-CAD3-48C3-95F5-15E18DCA1836/data/Containers/Bundle/Application/8B33FC59-FC03-41F8-BD21-43D81BA2D355/UITestingApp-Runner.app/PlugIns/UITestingApp.xctest/
productModuleName:(null) testsToSkip:(null) testsToRun:(null) reportResultsToIDE:no sessionIdentifier:<__NSConcreteUUID 0x7f93e146c0b0> F242796B-ED26-4AA7-861A-540D2D93CB8F pathToXcodeReportingSocket:(null) disablePerformanceMetrics:no treatMissingBaselinesAsFailures:no baselineFileURL:(null) targetApplicationPath:(null) targetApplicationBundleID:(null) reportActivities:no

有人 运行 参与其中或对我可能遗漏的内容有任何建议吗?

注意:我确实将 UI 测试目标的“目标应用程序”设置为我的应用程序

更新:我注意到这适用于 Xcode 的所有 beta/final 版本 - 相应地更新了标题

经过无休止的调整,将 "Xcode Preferences" 中派生数据的位置从 "Legacy" 更改为 "Custom" 并开始工作!

我遇到了类似的问题,我的错误是试图在常规测试目标中使用 UI 测试代码。一旦我创建了一个新目标,从 "iOS UI Testing Bundle" 开始并将代码复制到那里,错误就消失了。这是给我指明正确方向的线索: https://twitter.com/punksomething/status/609505357132500993 "Yeah, I was trying to use a UI test in a regular test target. Had to create a newly added UI Test target"

我确实遇到了这个问题。我认为问题源于沿途重命名目标。 None 这里的修复帮助我解决了我的问题。由于我刚刚开始,还没有编写任何测试,所以我删除了 UI 测试的整个目标和 re-added 它。相同的名称,一切都开始正常工作。

如果您运行遇到这个问题,可能是因为命名问题。您可以通过这种方式追踪它或保存您的测试和 re-add 一个 UI 目标。

当我试图向我的单元测试目标添加一个新的 class 但我已经 select 编辑了 UI 测试用例 Class 模板时,这发生在我身上而不是单元测试用例 Class 模板。

确保您总是 select 正确的。尽管它们都是 XCTestCase subclass 并且您将它们分配给正确的目标,但当 select 错误的模板时它会抛出此错误。

重命名目标后我得到了这个。解决方案是在我的 UITest 目标中将 'Target Application' 设置为 'None' 并点击 build。在此之后,我将 'None' 设置回我的应用程序并解决了错误。 我认为重命名很可能搞乱了 ui 测试目标的 'Target Application' 设置。

我在编写了一些测试并 运行ning 之后遇到了这个错误。我尝试了发布的所有修复和建议,但其中 none 对我有用。

我决定删除每当您 运行 测试并重新启动我的设备时创建的 XCUI 应用程序,它工作正常。但是,如果我 运行 测试 7 或 8 次之后,错误又回来了,我只是重复解决方案周期。如果您只是删除应用程序而不重新启动它,它将无法正常工作。

不确定这个答案是否适用于所有人,但这对我有用。

我得到了断言

*** Assertion failure in -[XCUIApplication init], /Library/Caches/com.apple.xbs/Sources/XCTest_Sim/XCTest-8170.3/XCTestFramework/UI Testing/XCUIApplication.m:76

定期,正如其他答案中所述。真的很烦人,我花了一些时间才找到摆脱它的最少步骤。

我找到的关键解决方案是重启您的设备。所以,你不需要删除应用程序,重新启动 Xcode 什么的,只是重新启动应该让这个断言消失。

我在 xCode 8.

上进行了 运行ning Cucumberish 测试

我通过 Project(在项目导航器中)> MyTestTarget > General

修复了

这里确保目标应用程序设置为您希望运行测试的应用程序。默认设置为 None.

在我的 TestCaseClass 的 setup() 方法中评论以下代码后,它对我有用

失败后继续=假& XCUIApplication().launch()

删除现有目标并重新创建可解决问题。

确保您选择了正确的测试包。对于 UI 测试,它应该是“iOS UI 测试包 ”。

  1. 新建文件UITest Case和Unit Test Case模板区别不大,(前两行代码),Select测试中的Unit Test会提示"Application is not running",加入"XCUIApplication().launch()"即可解决问题。
  2. 当测试提示找不到控件时(E.g UITextField),请将控件名称\identity -> accessibility -> Label\设置为与[=中使用的控件同名22=]测试类。
  3. 您没有将测试class添加到相应的UI目标。

问题:由于名称更改或任何其他更改,目标应用程序已更改

解决方案:转到 > 常规 > select 此处的目标应用程序

这可能是由于您的目标没有 TEST_TARGET_NAME 构建设置,或者它与您正在测试的目标的确切名称不匹配。即使在目标的“常规”选项卡中将“目标应用程序”设置为您的应用程序,您仍然需要在“构建设置”

中进行 TEST_TARGET_NAME 设置

我在 Xcode 13.1 中遇到了这个问题。当我创建项目时,有两个测试文件。 一个文件的顶部有 @testable import TestingAButtonSwiftui,而另一个没有。

没有的不@testable import TestingAButtonSwiftui也有这个功能:

 func testExample() throws {
    // UI tests must launch the application that they test.
    let app = XCUIApplication()
    app.launch()

    // Use recording to get started writing UI tests.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
}

当我把我想测试的东西放在这里时,它起作用了。