以下の私の状況:
私はいくつかのテストケースを持っています:
- ユーザーがサイトにログオンします。
- ユーザーがホームページを開きます。
- ユーザーにはいくつかの情報が表示されますが、それほど重要ではありません。テーブルやdivなどです。
- ユーザーはヘルプデスクページに移動します。
- ユーザーはCustomPageに移動します。
- ユーザーはページにいくつかのカスタム情報を表示します。
- そしてますます他の場合。
私のタスクは、Selenium DriverとJUnitを介して、さまざまなユーザー(admin1、admin2、userWithoutAccessなど)でこのすべてのケースをテストすることです。
しかし、現在、私のタスクに有効な解決策はありません:(
例えば:
public class HelpDeskPageTest
{
private static WebDriver driver;
HelpDeskPage helpDeskPage;
@BeforeClass
public static void setUpClass()
{
driver = new FirefoxDriver();
Utils.logon(driver, "admin", "1234");
}
@AfterClass
public static void tearDownClass()
{
driver.quit();
}
@Before
public void setUp()
{
helpDeskPage = HelpDeskPage.open(driver);
}
@Test
public void helpDeskPageIsOpen()
{
assertTrue(channelBrowserPage.getTitle().equals("Google: Internal HelpDesk"));
}
}
このコードは何をしますか?このコードは、ユーザー管理者がヘルプデスクページを開くことができるかどうかをテストするだけです。また、HelpDeskPageTest
クラスには、ヘルプデスクページでの管理アクションをテストする他の多くのテストメソッドを含めることができます。それはすべて大丈夫です。
あなたは私に尋ねることができます:それで、あなたはどこで問題を見ましたか?以下の私の答え:
- 他のユーザーに対して同じ機能をテストしたい場合(例:)
admin2
。どうすればいいですか?HelpDeskPageTestForAdmin2
名前: 、modify@BeforeClass
メソッド(ログインとして)で同じテストクラスを作成し、admin2
他のすべてのコードをHelpDeskPageTest
?からコピーする必要があります。しかし、これはDRYの原則に直接違反しています!どうすればこの状況を回避できますか? - サイトには多くの異なるページが含まれています(
Login, Home, HelpDesk, CustomPage1, CustomPage2
...)。別のページでは、別のテストクラス(、、)LoginPageTest
を作成しました。すべてのテストクラスは互いに独立しています。その結果、インスタンス化するメソッド(> 10秒)に多くの時間を費やしています。とても長いです!この時間遅延を回避するにはどうすればよいですか?すべての精巣内でインスタンスをどのように共有しますか?HomePageTest
HelpDeskPageTest
@BeforeClass
WebDriver
JUnitは私の問題をどのように解決できますか?