我已经能够在我的应用的调试窗口中看到打印语句。当我创建一个“模拟”程序(小型试用版应用程序)以了解Swift测试时,FirstTests文件夹下的LifecycleTests.swift文件中的所有打印语句都不会显示在调试窗口中。
import XCTest
class LifecycleTests: XCTestCase {
override class func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
print("In class setUp.")
// NSLog("In class setUp.")
}
override class func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
print("In class tearDown.")
// NSLog("In class tearDown")
}
override func setup() {
print("In setup.")
// NSLog("In setup")
}
override func tearDown() {
print("In tearDown.")
// NSLog("In tearDown.")
}
func testExample() {
print("Starting test.")
// NSLog("Starting test.")
addTearDownBlock {
print("In first tearDown block.")
// NSLog("In first tearDown block.")
}
// print("In middle of test.")
NSLog("In middle of test.")
addTearDownBlock {
print("In second tearDown block.")
// NSLog("In second teardown block.")
}
print("Finishing test.")
// NSLog("Finishing test.")
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
答案 0 :(得分:1)
一次只能从一个目标获得控制台输出。默认情况下,控制台输出设置为来自应用程序目标而不是测试目标。
如果仅运行包含print
语句的测试,则不会看到任何调试器输出:
该测试有一个print
语句,但是我们运行了该语句,但控制台中没有任何内容。
好的,但是现在让我们欺骗控制台以查看来自测试目标的输入。为此,在测试中放置一个断点:
我们跳过了print
语句,该语句连同有关测试的许多其他有用信息一起打印到控制台:
有趣的是,一旦您使用了这个技巧,就可以将断点带走。在再次运行应用程序本身之前,测试目标仍然是控制台源。
这招很奇怪,但这似乎是唯一的方法。苹果实际上在他们的docs中以暗示的方式承认了这一点:
如果您一直积极参与调试,则调试会话的任何输出也会显示在[控制台中]
显然“积极参与调试”意味着您已经在测试中设置了断点。