2014-06-18 3 views
4

난 내의 신속한 프로젝트에 단위 테스트를 추가하는 데 문제가 있습니다, 그래서 난 내 클래스의 제거 다운 버전의 새로운 엑스 코드 테스트 프로젝트를 생성 :스위프트에서 단위 테스트를 어떻게 설정합니까?

다음
class SimpleClass { 
    let x: String 

    init(x: String) { 
     self.x = x 
    } 

    convenience init(dict: Dictionary<String, String>) { 
     self.init(x: dict["x"]!) 
    } 
} 

나는 간단한 테스트 케이스를 만들어 :

import XCTest 
import TestProblem 

class TestProblemTests: XCTestCase { 
    func testExample() { 
     // This is an example of a functional test case. 
     XCTAssertEqual(SimpleClass(x: "foo"), SimpleClass(dict: ["x": "foo"])) 
    } 

} 

나는 SimpleClass에 대한 해결되지 않은 식별자 오류를 수정하기 위해 프로젝트 자체 ( import TestProblem)를 가져올 수 있었다.

내가 테스트를 실행하려고 할 때, 나는 다음과 같은받을 컴파일러 오류 : 나는 무슨

Could not find an overload for 'init' that accepts the supplied arguments 

를 놓친 거지? init에 대한 호출은 테스트 파일 내에서도 XCTAssertEqual 호출 외부에서 올바르게 작동합니다.

직감에

, 나는 또한 시도 :

Cannot convert the expression's type 'Void' to type 'SimpleClass' 

답변

2

당신이 명시 적으로 귀하의 PARAM을 정의하려고 했나 : 나는 그렇게 할 때

let x = SimpleClass(x: "foo") 
    let y = SimpleClass(dict: ["x": "foo"]) 
    XCTAssertEqual(x, y) 

, 나는이 오류가? 이렇게 :

let x : SimpleClass = SimpleClass(x: "foo") 
let y : SimpleClass = SimpleClass(dict: ["x": "foo"]) 
XCTAssertEqual(x, y) 
+0

흠, 문제가 해결됩니다. 명시 적 주석이 필요한 이유가 궁금합니다. – Bill

+0

일반적으로 명시 적 주석 없이는 작업해야합니다. 그것은 나를 위해 버그처럼 보이므로 사과에 신고 할 수 있습니다. Xcode는 아직 베타 2 버전이기 때문에 아직 완벽하지는 않습니다. – jaumard

+0

빠른 답변을 보내 주셔서 감사합니다. 문제를 알려 드리겠습니다. – Bill

관련 문제