PatientTestViewController

PatientTestViewController

我有一个OCUnit Test类:PatientTestViewControllerTests。下面是界面:

@interface PatientTestViewControllerTests : SenTestCase

@property (nonatomic, strong) PatientTestViewController *testController;

@end


和设置:

- (void) setUp
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Testing" bundle:nil];
    self.testController = [storyboard instantiateInitialViewController];
}


“测试”情节提要板是我的应用程序中唯一的情节提要板,并设置为该应用程序的主情节提要板。 PatientTestViewController设置为情节提要的唯一视图控制器。

我的测试班有一个测试:

- (void) testInitialTestingStoryboardViewIsPatientTest
{
    STAssertTrue([self.testController isMemberOfClass:[PatientTestViewController class]], @"Instead of the %@, we have %@",[PatientTestViewController class], [self.testController class]);
}


该测试失败,并显示以下日志消息:

错误:-[PatientTestViewControllerTests testInitialTestingStoryboardViewIsPatientTest]:“ [self.testController isMemberOfClass:[PatientTestViewController类]]”应该为true。代替PatientTestViewController,我们有PatientTestViewController

怎么会这样?以来

[self.testController isMemberOfClass:[PatientTestViewController class]]

显然是错误的,测试日志如何说明两者

[self.testController class][PatientTestViewController class]

看起来一样?

附加信息:


在测试中使用[self.testController isKindOfClass:[PatientTestViewController class]]也会失败
使用[self.testController class] == [PatientTestViewController class]也会失败。
使用[self.testController isKindOfClass:[UIViewController class]]通过。
使用[self.testController isMemberOfClass:[UIViewControllerclass]]失败。

最佳答案

问题可能是您的视图控制器的.m文件同时包含在两个目标(应用程序和测试包)中。 ocunit(以及类似Kiwi的派生类)使用测试工具,使应用程序中包含的类可用于测试,而无需明确包含其实现。

包括两者都给了您相同类的两个副本,这就是为什么它们具有相同的描述但具有不同的内存地址的原因。

10-08 00:27