Skip to content

Commit 6854fb3

Browse files
committed
Add name as a property on XCTestCase
1 parent bd5e3f8 commit 6854fb3

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

Sources/XCTest/XCTestCase.swift

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ public typealias XCTestCaseEntry = (testCaseClass: XCTestCase.Type, allTests: [(
2626

2727
public class XCTestCase {
2828

29-
public required init() {
29+
/// The name of the test case, consisting of its class name and the method name it will run
30+
public let name: String
31+
32+
public required init(methodName: String) {
33+
name = "\(self.dynamicType).\(methodName)"
3034
}
3135

3236
public func setUp() {
@@ -72,25 +76,33 @@ extension XCTestCase {
7276
}
7377

7478
internal static func invokeTests(tests: [(String, XCTestCase throws -> Void)]) {
79+
let observationCenter = XCTestObservationCenter.sharedTestObservationCenter()
80+
7581
var totalDuration = 0.0
7682
var totalFailures = 0
7783
var unexpectedFailures = 0
7884
let overallDuration = measureTimeExecutingBlock {
7985
for (name, test) in tests {
80-
let testCase = self.init()
81-
let fullName = "\(testCase.dynamicType).\(name)"
86+
let testCase = self.init(methodName: name)
8287

8388
var failures = [XCTFailure]()
8489
XCTFailureHandler = { failure in
90+
observationCenter.testCase(testCase,
91+
didFailWithDescription: "\(failure.failureDescription) - \(failure.message)",
92+
inFile: failure.file.stringValue,
93+
atLine: failure.line)
94+
8595
if !testCase.continueAfterFailure {
86-
failure.emit(fullName)
96+
failure.emit(testCase.name)
8797
fatalError("Terminating execution due to test failure", file: failure.file, line: failure.line)
8898
} else {
8999
failures.append(failure)
90100
}
91101
}
92102

93-
XCTPrint("Test Case '\(fullName)' started.")
103+
XCTPrint("Test Case '\(testCase.name)' started.")
104+
105+
observationCenter.testCaseWillStart(testCase)
94106

95107
testCase.setUp()
96108

@@ -107,20 +119,22 @@ extension XCTestCase {
107119
testCase.failIfExpectationsNotWaitedFor(XCTAllExpectations)
108120
XCTAllExpectations = []
109121

122+
observationCenter.testCaseDidFinish(testCase)
123+
110124
totalDuration += duration
111125

112126
var result = "passed"
113127
for failure in failures {
114-
failure.emit(fullName)
128+
failure.emit(testCase.name)
115129
totalFailures += 1
116130
if !failure.expected {
117131
unexpectedFailures += 1
118132
}
119133
result = failures.count > 0 ? "failed" : "passed"
120134
}
121135

122-
XCTPrint("Test Case '\(fullName)' \(result) (\(printableStringForTimeInterval(duration)) seconds).")
123-
XCTAllRuns.append(XCTRun(duration: duration, method: fullName, passed: failures.count == 0, failures: failures))
136+
XCTPrint("Test Case '\(testCase.name)' \(result) (\(printableStringForTimeInterval(duration)) seconds).")
137+
XCTAllRuns.append(XCTRun(duration: duration, method: testCase.name, passed: failures.count == 0, failures: failures))
124138
XCTFailureHandler = nil
125139
}
126140
}

0 commit comments

Comments
 (0)