Java 在BrowserStack中的不同浏览器上运行JUnit套件的配置文件
你能看看我的问题并给我一些解决问题的建议吗。 我使用JUnit4和Selenium2WebDriver。 因此,我有一个类来运行JUnit套件:Java 在BrowserStack中的不同浏览器上运行JUnit套件的配置文件,java,selenium,configuration,junit,suite,Java,Selenium,Configuration,Junit,Suite,你能看看我的问题并给我一些解决问题的建议吗。 我使用JUnit4和Selenium2WebDriver。 因此,我有一个类来运行JUnit套件: @RunWith(Suite.class) @Suite.SuiteClasses({className1.class, clasName2.class}) public class TestSuite { public static TestSuite suite() { TestSuite suite = new TestSui
@RunWith(Suite.class)
@Suite.SuiteClasses({className1.class, clasName2.class})
public class TestSuite
{
public static TestSuite suite()
{
TestSuite suite = new TestSuite();
suite.addTest(new JUnit4TestAdapter(className1.class));
suite.addTest(new JUnit4TestAdapter(className2.class));
return suite;
}
}
每个类都包含@Test method,并通过在BrowserStack计算机上运行套件所需的功能扩展了在@BeforeClass参数中设置的基类:
public class MyTestBase{
static protected WebDriver driver;
private boolean acceptNextAlert = true;
protected static StringBuffer verificationErrors = new StringBuffer();
@BeforeClass
public static void setUp() throws Exception {
DesiredCapabilities capability = DesiredCapabilities.firefox();
capability.setPlatform(Platform.WINDOWS);
capability.setCapability("build", "JUnit - Sample");
capability.setCapability("acceptSslCerts", "true");
capability.setCapability("browserstack.debug", "true");
driver = new RemoteWebDriver(
new URL("http://username:accesskey@hub.browserstack.com/wd/hub"),
capability);
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
}
/* other code */
}
那么,你能帮我做下一件事吗:
1我需要创建配置文件并使用其参数在BrowserStack中的不同浏览器上运行我的TestSuite。任何使用.xml文件的示例都将不胜感激。
2以及如何修改TestSuite.class以使用.xml文件参数。
3我的TestSuite.class由许多.class组成,每个.class中都有@Test method。每个类都在注释@BeforeClass和@AfterClass所在的位置扩展了MyTestBase.class,但当我运行TestSuite时,TestSuite中的每个类都启动了新的浏览器,这对我来说是一个很大的问题。对于跨TestSuite中的所有类运行一次browser for all@Test方法,我可以做些什么。我知道@BeforeClass适用于一个类中的所有@Test方法,但是如果有可能的类,应该怎么做呢?在TestNG中,有@BeforeSuite解决了这个问题。
很抱歉,有这么多问题,但我已经尝试了很多,但没有成功:
非常感谢 你问了很多关于不同主题的问题。我会设法把事情弄清楚的 重用浏览器,而不是为每个测试类打开新的浏览器 这只有在实例化WebDriver一次并在所有测试中使用该对象时才能实现。因此,不要在测试的@BeforeClass方法中实例化浏览器 如何初始化您的WebDriver? 在测试套件的第一个测试类中。这可能是一个专门用于打开浏览器的测试。或者,您可以在所有测试中包含此功能,并且必须检查浏览器是否已初始化 如何重用WebDriver对象并在测试类之间共享它? 我建议创建一个存储WebDriver对象的。这样所有测试都可以访问它。然而,要使这个线程安全需要更多的努力——以防您并行运行测试 使用不同的浏览器运行测试 您应该将测试@Parameterized,并期望执行一组WebDriver对象作为参数 两者结合:不同的浏览器和在测试之间重用浏览器 这可能会导致您希望为测试套件定义参数。然而,在标准JUnit4中,您不能这样做。
我建议使用中的ParameterizedSuite runner。我从未见过这样的设置。。有没有想过让Maven或Ivy构建系统来处理您的测试,而不是一个专门运行其余类的类?@PeterSmith感谢您的回答。是的,以前我使用ant来运行测试,它运行得很好,但是我只有几个测试类。现在,我的项目越来越大,我已经重构了我的代码,并决定形成可能会及时更改的测试套件。如何通过build.xml文件中的ant命令将浏览器参数传递给TestSuite?谢谢谁是彼得史密斯??你看到这个了吗抱歉@PeterSmith=您考虑过使用TestNG而不是Junit吗?使用TestNG,您可以将参数存储在xml中,并将其传递给测试,然后在@BeforeSuite注释方法中启动浏览器。