前々回あたりでSelenium2のテストを書き始めたが, 毎回毎回ブラウザを立ち上げては消すのがなんとも時間がかかる.
なのでせめて一つのテストファイルの中ではブラウザの立ち上げ→終了は1回にして, 同じウィンドウを使い回せないかと考えた.
これでいいんだろうか…('A`)Selenium2のテストの余計な時間の短縮
正直8割 jUnit4による解決
private static WebDriver driver; @BeforeClass public static void setUpBeforeClass() throws Exception { driver = new FirefoxDriver(); } @Before public void setUp() throws Exception { driver.get(initUrl); } @After public void tearDown() throws Exception { driver.manage().deleteAllCookies(); } @AfterClass public static void tearDownAfterClass() throws Exception { driver.quit(); }
Firefox版. 単純にjUnitのアノテーションに頼れば何とかなんじゃね?というだけのお話.
アノテーションのおかげで
@BeforeClass → (@Before → @Test → @After) * n → @AfterClass
という順序で呼ばれるので
ブラウザ起動 → (初期状態作成 → テスト → 事後処理) * n → ブラウザ閉じる
とすればいい.
コード的にも前々回使ったコードがほとんど.
driver.manage().deleteAllCookies();このメソッドで作られてしまったクッキーを削除しているくらい. これを@Afterで行なうことで各テストで作られたクッキーを削除してやる.
@Beforeのところでテストしたい画面の初期状態を作ってやれば, 一つのテストファイル中は同じウィンドウを使いまわしてテストができるはず.
これで毎回テストメソッドごとにブラウザ立ち上げては閉じるなんて時間が大幅にカットできる.
実際変更前のテストごとにウィンドウを開く方法だと6分かかっていたテストも, 3分強程度まで短縮できている.
せいぜい30~40程度ののテストでこれなのだからさらにテストが増えたときの差は大きいはず!
+(・ω・0)*
どうみてもSelenium2の問題ではありません. 本当にありがとうございましたorz
0 件のコメント:
コメントを投稿