Test Case Accessibility

Test cases should only contain private non-test members

  • Identifier: test_case_accessibility
  • Enabled by default: No
  • Supports autocorrection: Yes
  • Kind: lint
  • Analyzer rule: No
  • Minimum Swift compiler version: 5.0.0
  • Default configuration:
    KeyValue
    severity warning
    allowed_prefixes []
    test_parent_classes [“QuickSpec”, “XCTestCase”]

Non Triggering Examples

let foo: String?
let foo: String?

class FooTests: XCTestCase {
    static let allTests: [String] = []

    private let foo: String {
        let nestedMember = "hi"
        return nestedMember
    }

    override static func setUp() {}

    override func setUp() {}

    override func setUpWithError() throws {}

    override static func tearDown() {}

    override func tearDown() {}

    override func tearDownWithError() {}

    override func someFutureXCTestFunction() {
        super.someFutureXCTestFunction()
    }

    func testFoo() {
        XCTAssertTrue(true)
    }

    func testBar() {
        func nestedFunc() {}
    }

    private someFunc(hasParam: Bool) {}
}
class FooTests: XCTestCase {
    private struct MockSomething: Something {}
}
class FooTests: XCTestCase {
    override init() {
        super.init()
        let foo = 1
        var bar = 2
    }
}
class FooTests: XCTestCase {
    func allowedPrefixTestFoo() {}
}
class Foobar {
    func setUp() {}

    func tearDown() {}

    func testFoo() {}
}

Triggering Examples

class FooTests: XCTestCase {
    typealias Bar = Foo.Bar

    var foo: String?
    let bar: String?

    static func foo() {}

    func setUp(withParam: String) {}

    func foobar() {}

    func not_testBar() {}

    enum Nested {}

    static func testFoo() {}

    static func allTests() {}

    func testFoo(hasParam: Bool) {}
}

final class BarTests: XCTestCase {
    class Nested {}
}