我正在XCTests中的Xcode中运行一些单元测试。当我运行它们时,所有测试都通过并失败,并显示绿色的小勾号或红色的叉号。 主要问题似乎是我的测试过早取消并且无法正常运行。

这是更多信息:

  • 运行测试时,以前没有发生过任何控制台输出。就是说,我以前确实有预期的控制台输出,但现在没有。
  • 运行测试时,不需要我解锁iPhone即可运行该应用程序。而且,即使我的iPhone已解锁,它也不会像以前那样运行该应用程序。
  • 运行我的测试时,它会完成编译,然后很快在Xcode的信息栏中(位于顶部和中间的栏中,显示警告,并在构建项目时显示“Building”)中说“正在取消...”。
  • 我正在使用.xcworkspace文件(因为我正在使用Pods)
  • 我有一个构建方案,即项目。
  • 我遇到了这些相同的问题,以及绿色检查和红色叉号在运行后没有显示在我的测试中,有时我的测试在“测试”选项卡中根本没有显示的问题。通过删除Podfile.lock文件,Pods目录和.xcworkspace目录,然后运行Pod安装,我解决了这些问题。完成此操作后,除了这两个问题外,我遇到了相同的问题。
  • 我尝试在不同的分支上运行新的测试,同样的问题。
  • 在遇到任何这些问题之前,我只是编写测试并尝试使用不同的编写测试方法。我已经还原了所有这些更改,但仍然遇到这些错误。
  • 在没有模拟器的情况下运行测试时,我也发现了相同的问题。
  • 从Xcode编译并运行应用程序时,它运行良好。

  • 关于如何解决此问题的任何建议都很棒!如果需要,请询问更多详细信息。

    这是我进行测试的视频。我建立了一个新项目和一个新的单元测试目标,以显示正在发生的事情。 注意:那里有一个空测试,并且一个测试应始终通过:

    ios - XCTests过早取消-LMLPHP

    如您所见,问题在于测试无法正常运行。绿色和红色的十字不再显示,应该总是通过的测试失败了,没有控制台输出,并且在顶部信息栏中几乎立即说“正在取消...”。 关于为什么要取消的任何建议都很棒!

    以下是有关如何设置代码的一些屏幕截图:

    ios - XCTests过早取消-LMLPHP
    ios - XCTests过早取消-LMLPHP

    这也是代码(这只是创建新的单元测试之后的基本代码,除了我添加了一个始终应该通过的断言):
    import XCTest
    @testable import example
    
    class exampleTests: XCTestCase {
    
        override func setUp() {
            // Put setup code here. This method is called before the invocation of each test method in the class.
        }
    
        override func tearDown() {
            // Put teardown code here. This method is called after the invocation of each test method in the class.
        }
    
        func testExample() {
            // This is an example of a functional test case.
            // Use XCTAssert and related functions to verify your tests produce the correct results.
            XCTAssertTrue(true)
        }
    
        func testPerformanceExample() {
            // This is an example of a performance test case.
            self.measure {
                // Put the code you want to measure the time of here.
            }
        }
    }
    

    编辑:

    因此,按照@CPR的建议,我在模拟器上再次尝试了该操作,然后基本上所有错误都消失了。我在物理设备上再次尝试了此操作,但是错误仍然存​​在。注意:我之前在模拟器上尝试过它,但是得到了相同的错误。从那时起我一直没有进行任何更改,因此我不确定为什么它现在可以工作。这是在sim上运行测试的控制台输出(不确定是否会有所帮助,但我还是会添加它):
    Test Suite 'All tests' started at 2018-12-06 03:59:53.045
    Test Suite 'exampleTests.xctest' started at 2018-12-06 03:59:53.046
    Test Suite 'exampleTests' started at 2018-12-06 03:59:53.046
    Test Case '-[exampleTests.exampleTests testExample]' started.
    Test Case '-[exampleTests.exampleTests testExample]' passed (0.001 seconds).
    Test Case '-[exampleTests.exampleTests testPerformanceExample]' started.
    /Users/akashkundu/Documents/example/exampleTests/exampleTests.swift:30: Test Case '-[exampleTests.exampleTests testPerformanceExample]' measured [Time, seconds] average: 0.000, relative standard deviation: 115.251%, values: [0.000004, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001], performanceMetricID:com.apple.XCTPerformanceMetric_WallClockTime, baselineName: "", baselineAverage: , maxPercentRegression: 10.000%, maxPercentRelativeStandardDeviation: 10.000%, maxRegression: 0.100, maxStandardDeviation: 0.100
    Test Case '-[exampleTests.exampleTests testPerformanceExample]' passed (0.348 seconds).
    Test Suite 'exampleTests' passed at 2018-12-06 03:59:53.396.
         Executed 2 tests, with 0 failures (0 unexpected) in 0.348 (0.350) seconds
    Test Suite 'exampleTests.xctest' passed at 2018-12-06 03:59:53.396.
         Executed 2 tests, with 0 failures (0 unexpected) in 0.348 (0.350) seconds
    Test Suite 'All tests' passed at 2018-12-06 03:59:53.397.
         Executed 2 tests, with 0 failures (0 unexpected) in 0.348 (0.351) seconds
    

    谁能阐明为什么在物理设备上运行测试会导致这些错误?

    编辑:

    这是@CPR发现的Xcode中“消息”选项卡中的错误/日志消息:

    ios - XCTests过早取消-LMLPHP

    这是文本中的错误/日志代码:
    example.app encountered an error (Failed to establish communication with the test runner. (Underlying error: Unable to connect to test manager on 8b441d96d063b3b6abf55b06115441d160e85e67. (Underlying error: kAMDMuxConnectError: Could not connect to the device.)))
    

    -------------------------------------------------- ---------------------

    解决方案:

    感谢@CPR,解决方案是只需重新启动设备即可。另一个汲取的教训是使用“消息”选项卡查看日志和错误,它是“Breakpoint”选项卡旁边最右边的选项卡。

    他的完整答案here

    最佳答案

    问题已在评论中解决。对于将来的读者,如果遇到类似问题,可以通过以下几方面的好检查:

  • 检查Xcode消息选项卡以查找构建错误。
  • 适本地重新启动设备/模拟器。 在这种情况下,此问题已解决。
  • 在设备/模拟器上卸载/重新安装应用程序。
  • 证书/配置文件有效吗?尝试生成新的并重新运行。
  • 它可以在模拟器上运行吗?如果是,则可能是设备本身存在问题。
  • 运行代码时是否遇到断点?如果是,则这是测试失败。如果否,那么问题甚至在测试运行之前就已经发生了(就像这里的情况)。
  • 关于ios - XCTests过早取消,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53643318/

    10-15 08:29