当我尝试像这样的测试时
@interface My_Tests : XCTestCase
- (void)testExample {
XCTAssertTrue(@YES, @"has to be passed");
}
一切正常。但是,当我尝试这种模式时:
#import "NSString+Additions.h"
//...
- (void)testNameValidation {
NSString *string = @"Harry";
XCTAssertTrue([string stringIsValid], @"Name validation error");
}
我得到:
file:///Users/username/project/ProjectTests/ProjectTest.m: test failure:
-[Project_test testNameValidation] failed: (([string stringIsValid]) is true)
failed: throwing "-[__NSCFConstantString stringIsValid]: unrecognized selector
sent to instance 0x2f58ae8" - Name validation error
我也可以这样做:
#import "MyViewController.h"
//...
- (void)testSomething {
MyViewController *a = [[MyViewController alloc] init];
XCTAssertTrue(@YES, @"Impossible!");
}
我收到 2 个错误(第一行和最后一行):
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_MyViewController", referenced from:
objc-class-ref in MyTest.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
有人可以解释一下我做错了什么..?我的课什么也做不了。值得补充的是,我正在尝试测试我的自定义静态库和其中包含的文件。我正在使用 CocoaPods,并且我已经根据 Kiwi 描述设置了环境(只是为了能够在我的测试中使用 CocoaPods 文件,我还想知道是使用 Kiwi 还是 XCTests)。
PS。这是我第一次尝试任何类型的单元测试,所以请原谅最终的noobish问题;)