好吧,所以我被推荐使用XCTests,但它完全困扰着我。所以我试图初始化它的一个小测试。我已经编辑了我的程序的名称,因为我不确定隐私是如何在网上工作的。
// -----Tests.swift
import XCTest
final class Tests: XCTestCase {
func testCallMoveFunctionForPlayer() throws {
// Create a Board instance
let board = Board()
// Create a Mob instance
let mob = Mob()
// Define the start point
let startPoint = Coord(row: 0, col: 0)
// Place the Mob at the start point on the Board
board.pieces[startPoint] = mob
// Define the destination
let destination = Coord(row: 1, col: 1)
// Call the function to test
board.callMoveFunctionForPlayer(tapRow: destination.row, tapCol:
destination.col, startPoint: startPoint, piece: mob)
// Check if the Mob has moved to the destination
XCTAssertNil(board.pieces[startPoint])
XCTAssertNotNil(board.pieces[destination])
XCTAssertEqual(board.pieces[destination], mob)
}
}
字符串
但是,我被告知Mob和Board都不在这个范围内,所以我把这个文件移到了我的应用程序文件旁边,但是它仍然不工作,然后我把它移回来,但是现在我有一个不同的问题“没有像'XCTest'这样的模块”,这对我来说毫无意义,我把它移到了它来自的同一个文件中。
我希望有一种简单的方法来自动检查我的游戏中最常见的一些bug,但它不起作用。我试图取消所有的方式回来,但即使在其原始状态,它仍然声称该模块不存在。我没有删除任何文件或其他东西,我只是来回移动它。我没有改变其他任何东西。
1条答案
按热度按时间a8jjtwal1#
XCTest在单独的应用程序目标中运行。这本质上是一个单独的应用程序。您不希望测试代码与主应用程序分离,这样您就可以将其保持独立,并知道它不会意外地(或不利地)影响任何东西。这意味着您需要将主代码公开给测试目标。这可以通过使用
@testable
导入应用程序来完成将其添加到测试文件的顶部
字符串
这会将主应用中的所有代码公开给测试目标,而不会将测试代码公开给主应用。允许您在测试中使用已开发的所有代码。
关于
No such module as XCTest
错误,听起来像是您更改了测试文件的目标。在编辑器中打开测试文件,然后在右侧的检查器窗格中,在Target Membership
下,检查它是否只是测试目标的一部分,而不是主目标的一部分。