UIViewcontroller
どのテストファイルを選択する必要があるかをどのように知るようになったのだろうか。
たとえば、私はそのUIViewcontrollers
中にたくさんの大きなプロジェクトを持っています。
また、コントローラーごとに個別のテスト ファイルを作成したいと考えています。1 はlogin用、もう1 つはprofile UIViewcontroller
用です。
フレームワークが初期段階であることは知っていますが、どんな助けも大歓迎です。
ありがとう。
UIViewcontroller
どのテストファイルを選択する必要があるかをどのように知るようになったのだろうか。
たとえば、私はそのUIViewcontrollers
中にたくさんの大きなプロジェクトを持っています。
また、コントローラーごとに個別のテスト ファイルを作成したいと考えています。1 はlogin用、もう1 つはprofile UIViewcontroller
用です。
フレームワークが初期段階であることは知っていますが、どんな助けも大歓迎です。
ありがとう。
サブリミナルでは、テストがアプリケーションを駆動しますが、その逆ではありません。さまざまなビュー コントローラーに対応するテストを作成できますが、アプリケーション内でそれらのコントローラーのビューに移動するのはテストの役割です。
そのナビゲーションは通常、テストの実装内で行われます-setUpTest
。アプリケーションが「ログイン」というボタンがある「ホーム」画面を開くとします。そのボタンを押すと、「ログインビューコントローラー」が表示されます。そのビュー コントローラーをテストする方法は、次のようなテストを統合テスト ターゲットに追加することです。
@interface LoginTest : SLTest
@end
@implementation
- (void)setUpTest {
// make sure we're at "Home", then:
SLButton *loginButton = [SLButton elementWithAccessibilityLabel:@"Log in"];
[loginButton tap];
}
/*
now test the login view controller:
- (void)testThat... { }
*/
- (void)tearDownTest {
// log out and go back to "Home"
}
@end
-setUpTest
テストが と の既知の場所で開始および終了することが非常に重要であることに注意してください-tearDownTest
。特定の順序で実行されるサブリミナル テストに依存することはできません。
では、プロファイル画面をどのようにテストしますか? アプリケーションで、ログイン直後にプロファイルが表示されたとします。この場合、プロファイル テストは次のようになります。
@interface ProfileTest : SLTest
@end
@implementation
- (void)setUpTest {
// Log in
}
/*
now test the profile view controller:
- (void)testThat... { }
*/
- (void)tearDownTest {
// log out and go back to "Home"
}
@end
ProfileTest
テストしたいビューに到達するために必要なことを実行する必要があることがわかります。この場合はログインします (これが、LoginTest
ログアウトして の「ホーム」に戻ることが-tearDownTest
重要ProfileTest
な理由です。最初に実行しても既知の状態LoginTest
)。
このセットアップ プロセスを簡単にするために、「アプリ フック」を使用できます。LoginTest
ログイン UI が機能することを確認すると、その UI を通過することは重要ではありませんProfileTest
。代わりに、アプリケーションにログインを要求できます。アプリケーション デリゲートがテストを開始する直前に、テスト ユーザーをプログラムでログインできるものとして「ログイン マネージャー」シングルトンを登録する場合があります。
[[SLTestController sharedTestController] registerTarget:[LoginManager sharedManager]
forAction:@selector(logInWithInfo:)];
次に、-[ProfileTest setUpTest]
次を呼び出すことができます。
[[SLTestController sharedTestController] sendAction:@selector(logInWithInfo:)
withObject:@{
@"username": @"john@foo.com",
@"password": @"Hello1234"
}];