41

好的,到目前为止,我还无法在任何测试版中运行此测试。我遇到的一些问题在这里这里

现在,我觉得我错过了一些东西。

这是我到目前为止的进展

  1. 创建新项目时启用“UI 测试”选项。这实际上为我增加了一个目标。所以我应该很高兴——至少我是这么想的。 在此处输入图像描述
  2. UI Testing下的swift文件已经导入了“XCTest”,是“XCTestCase”的子类。
  3. setup() 启动应用程序 XCUIApplication().launch()
  4. 我添加了以下内容(通过点击记录按钮) 在此处输入图像描述

然后,我运行了这个测试。

整个事情甚至在调用测试之前就失败了,就在 setup() 中启动应用程序之后,使用以下命令

*** -[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:错误:-[UITestingApp.UITestingApp testSimpleTap]:失败:捕获“NSInternalInconsistencyException”,“没有通过测试配置指定目标应用程序路径:
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:notreatMissingBaselinesAsFilePathures:nobaseline :(null) targetApplicationBundleID:(null) reportActivity:no

有人遇到这个问题或对我可能遗漏的内容有任何建议吗?

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

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

4

14 回答 14

56

我有一个类似的问题,我的错误是尝试在常规测试目标中使用 UI 测试代码。一旦我创建了一个新目标,从“iOS UI 测试包”开始并将代码复制到那里,错误就消失了。这是为我指明正确方向的线程: https ://twitter.com/punksomething/status/609505357132500993 “是的,我试图在常规测试目标中使用 UI 测试。必须创建一个新添加的 UI 测试目标"

于 2015-09-22T00:50:32.383 回答
24

当我尝试向单元测试目标添加新类时发生这种情况,但我选择了 UI 测试用例类模板而不是单元测试用例类模板。

确保您始终选择正确的。尽管它们都是 XCTestCase 子类并且您将它们分配给正确的目标,但在选择错误的模板时会抛出此错误。

在此处输入图像描述

于 2016-06-09T12:06:53.110 回答
6

我在重命名目标后得到了这个。解决方案是在我的 UITest 目标中将“目标应用程序”设置为“无”并点击构建。在此之后,我将我的应用程序设置为“无”并解决了错误。我认为重命名很可能会弄乱 ui 测试目标的“目标应用程序”设置。

于 2016-06-20T13:57:54.523 回答
4

我有这个确切的问题。我认为问题源于沿途重命名目标。这里的任何修复都没有帮助我解决我的问题。由于我刚刚开始并且还没有编写任何测试,所以我删除了 UI 测试的整个目标并重新添加了它。同名,一切都开始正常工作。

如果您遇到此问题,可能是由于命名。您可以通过这种方式跟踪它或保存测试并重新添加 UI 目标。

于 2016-01-04T19:59:20.027 回答
4

我得到断言

*** -[XCUIApplication init] 中的断言失败,/Library/Caches/com.apple.xbs/Sources/XCTest_Sim/XCTest-8170.3/XCTestFramework/UI Testing/XCUIApplication.m:76

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

我找到的关键解决方案是重新启动您的设备。因此,您不需要删除应用程序、重新启动 Xcode 或其他东西,只需重新启动即可使此断言消失。

于 2016-09-13T11:18:09.257 回答
2

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

在此处输入图像描述

于 2015-09-18T18:44:34.503 回答
2

在编写了一些测试并运行它们后,我收到了这个错误。我尝试了所有发布的修复和建议,但没有一个对我有用。

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

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

于 2016-08-24T23:38:13.990 回答
2

删除现有目标并再次创建可解决此问题。

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

于 2017-05-09T08:40:47.897 回答
1

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

continueAfterFailure = false & XCUIApplication().launch()

于 2017-04-10T13:50:54.077 回答
1

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

解决方案:转到>常规>从此处选择目标应用程序

在此处输入图像描述

于 2020-05-12T02:47:22.233 回答
0

我在 xCode 8 上运行 Cucumberish 测试时遇到了这个问题。

我通过项目(在项目导航器中)> MyTestTarget > General 来修复

在此确保将目标应用程序设置为您希望对其运行测试的应用程序。默认情况下,它设置为无。

于 2016-09-13T13:41:13.450 回答
0

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

于 2020-12-29T11:04:27.357 回答
0

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

没有的 not @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.
}

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

在此处输入图像描述

于 2021-11-07T22:33:22.527 回答
-1
  1. 新建文件UI测试用例和单元测试用例模板差别不大,(前两行代码),测试中选择单元测试会提示“Application is not running”,添加“XCUIApplication().launch()”可以解决问题。</li>
  2. 当测试提示找不到控件时(如UITextField),请将控件名称\标识->可访问性->标签\设置为与UITestClass中使用的控件同名。</li>
  3. 您没有将测试类添加到相应的 UI Targets。</li>
于 2017-09-15T02:37:52.300 回答