我正在查看apple的example code进行应用程序测试,而这一切都涉及特定视图中的更改。我想写一个断言如下的测试:
Given that I am seeing the Results view,
And I press the button for the first result,
Then I should see a Detail view,
And its controller's result property should be set to the first result
我将如何编写该测试用例?
答案 0 :(得分:2)
在伪代码中,我认为你的测试会是这样的:
// in setUp, grab a reference to your desired view controllers & buttons
// in the test method:
// press a tab (or whatever it takes) to navigate to the Results view
// press the button for the first result (using target/action or however you have it set up)
STAssertTrue([myNavigationController.visibleViewController isKindOfClass:[DetailViewController class]]);
STAssertTrue([(DetailViewController *)myNavigationController.visibleViewController result] == /*first result from earlier*/);
// in tearDown, do cleanup if necessary
如果这还不够,您应该发布一些代码,以便我们更轻松地提供帮助。
修改:有关setUp
的更多信息。我认为值得查看您链接到的示例代码中的实现:
- (void) setUp {
app_delegate = [[UIApplication sharedApplication] delegate];
calc_view_controller = app_delegate.calcViewController;
calc_view = calc_view_controller.view;
}
app_delegate
,calc_view_controller
和calc_view
是CalcApplicationTests
类的实例变量,因此可以在任何-test...
方法中使用它们。应用程序委托本质上是应用程序的控制器,它具有对主视图控制器的引用。我认为这是一种非常简单明智的做法。
答案 1 :(得分:2)
您还可以看一下由Square上的好人发布的开源集成测试框架。看起来它可以帮助您自动化一些如果您似乎感兴趣的UI级别交互测试。
我自己没有使用过这个框架,但是有必要查看它。
http://corner.squareup.com/2011/07/ios-integration-testing.html
希望这有帮助。