我的情况如下:
我有几个测试用例:
- 用户登录网站;
- 用户打开主页;
- 用户看到一些信息,不是那么重要,可能是一些表或 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"));
}
}
这段代码有什么作用?此代码仅测试用户 admin 是否可以打开帮助台页面。此外,HelpDeskPageTest
类可以包含许多其他测试方法,用于测试 HelpDesk Page 上的管理员操作。没关系。
你可以问我:那么,你是从哪里看出问题的呢?我的回答如下:
- 如果我想为其他用户测试相同的功能(例如:)
admin2
。我该怎么做?我必须使用名称创建相同的测试类:HelpDeskPageTestForAdmin2
,修改@BeforeClass
方法(登录为admin2
),然后复制所有其他代码HelpDeskPageTest
?但这直接违反了DRY原则!我怎样才能避免这种情况? - 站点包含许多不同的页面(
Login, Home, HelpDesk, CustomPage1, CustomPage2
...)。对于单独的页面,我制作了单独的测试类(LoginPageTest
,,,HomePageTest
)HelpDeskPageTest
。所有测试类都是相互独立的。结果我花了很多时间来@BeforeClass
实例WebDriver
化(> 10秒)的方法。这么长!我怎样才能避免这种时间延迟?如何在所有睾丸内共享实例?
JUnit 如何帮助我解决问题?