I have an OCUnit Test class: PatientTestViewControllerTests. Below is the interface:
@interface PatientTestViewControllerTests : SenTestCase
@property (nonatomic, strong) PatientTestViewController *testController;
@end
and setUp:
- (void) setUp
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Testing" bundle:nil];
self.testController = [storyboard instantiateInitialViewController];
}
The 'Testing' storyboard is the only storyboard in my app, and is set as the app's main storyboard. The PatientTestViewController is set as the storyboard's only view controller.
I have one test in my test class:
- (void) testInitialTestingStoryboardViewIsPatientTest
{
STAssertTrue([self.testController isMemberOfClass:[PatientTestViewController class]], @"Instead of the %@, we have %@",[PatientTestViewController class], [self.testController class]);
}
This test fails with the following log message:
error: -[PatientTestViewControllerTests testInitialTestingStoryboardViewIsPatientTest] : "[self.testController isMemberOfClass:[PatientTestViewController class]]" should be true. Instead of the PatientTestViewController, we have PatientTestViewController
How can this be? Since
[self.testController isMemberOfClass:[PatientTestViewController class]]
is apparently false, how can the test log say that both
[self.testController class]
and [PatientTestViewController class]
look the same?
Additional Info:
[self.testController isKindOfClass:[PatientTestViewController class]]
in the test also failsusing [self.testController class] == [PatientTestViewController class]
fails also.
using [self.testController isKindOfClass:[UIViewController class]]
PASSES.
[self.testController isMemberOfClass:[UIViewController
class]]
FAILS.The problem is likely that your view controller's .m file is included in both targets, the app and the test bundle. ocunit (and derivatives like Kiwi) uses a test harness that makes the classes included in the app available to tests without having to explicitly include their implementation.
Including both has given you two copies of the same class, which is why they have the same description but different memory addresses.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With