小编Chi*_*one的帖子

多个异步测试和期望

我有多个测试,每个测试都使用给定参数测试相同的异步方法以获取不同的结果。

我发现对于异步测试,我们必须声明一个期望,等待期望,并实现期望。这可以。每个测试单独完成时都可以正常工作,但是当我尝试运行整个测试类时,某些测试会通过,而其他一些则在正常运行并通过时会崩溃或失败。

我在网上四处寻找“用期望迅速进行3次多重测试”,每个解释期望的人都只能在一个测试方法中找到一个例子。在同一个类的多个方法中不可能有期望吗?

测试示例如下:

func testLoginWrongUsernameOrPasswordFailure() {
  let viewModel = LoginViewModel()
  let loginAPI = APIManager()
  let expect = expectation(description: "testing for incorrect credentials")

  viewModel.loginWith(username: "qwerty", password: "qwerty", completion: { loginCompletion in

      do {
        try loginCompletion()
          XCTFail("Wrong Login didn't error")
          expect.fulfill()
        } catch let error {
          XCTAssertEqual(error as? LoginError, LoginError.wrongCredentials)
          expect.fulfill()
        }
      })

      waitForExpectations(timeout: 10) { error in
        XCTAssertNil(error)
      }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这是对期望值的正确使用,并且每个测试都遵循相同的模式

根据Rob的要求,我将在此处提供MCVE https://bitbucket.org/chirone/mcve_test 测试类使用模拟API管理器,但是当我使用真实的API管理器进行测试时,仍然会发生错误。

作为对代码的解释,视图模型与给定的API管理器进行通信,后者调用服务器并向视图模型返回响应,以供他解释错误或成功。

第一个测试将测试空白字段,而视图模型会验证空白字段,而不是APIManager。第二个测试测试不正确的用户名和密码第三个测试测试有效的用户名和密码

分别运行的三个测试将运行良好,但是当运行整个文件时,由于以下原因,我会收到SIGABRT错误:

XCTAssertEqual失败:(“” Optional(MCVE.LoginError.wrongCredentials)“)不等于(”“ Optional(MCVE.LoginError.emptyFields)”)-

***-[XCTestExpectation满足],/ Library / Caches / com.apple.xbs / Sources / XCTest_Sim …

testing asynchronous swift xctestexpectation

5
推荐指数
3
解决办法
1263
查看次数

使用XCTest和swift时,不会显示编译错误

看起来好像以前没有人遇到过这个问题,但是我正在使用Xcode 7.3.1并开始使用swift添加一些UI测试用例.当我使用swift时,没有出现编译错误或警告.因此,当我做错事时,它只是说"构建失败",但没有说明原因.什么都没有出现.

然而,当我在目标C中进行测试时,它与编译错误和警告一起正常工作,并且NSLocalizedString也可以工作......

有谁知道如何让Xcode在使用swift的测试中显示编译错误和警告?

xcode xctest swift

3
推荐指数
1
解决办法
1021
查看次数

标签 统计

swift ×2

asynchronous ×1

testing ×1

xcode ×1

xctest ×1

xctestexpectation ×1