gpt4 book ai didi

java - 在 BrowserStack 中的不同浏览器上运行 JUnit Suite 的配置文件

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:17 25 4
gpt4 key购买 nike

您能否看看我的问题并提供解决问题的建议。我使用 JUnit4 和 selenium 2 WebDriver。所以,我有运行 JUnit 套件的类(class):

@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 方法并扩展 BaseClass,该 BaseClass 在 @BeforeClass 参数中设置(通过 DesiredCapativity)以在 BrowserStack 计算机上运行套件:

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方法。每个类都扩展了 MyTestBase.class,其中注释 @BeforeClass 和 @AfterClass 所在的位置,但是当我运行 TestSuite 时,已经为 TestSuite 中的每个类启动了新的浏览器,这对我来说是一个非常大的问题。对于 TestSuite 中所有类的所有 @Test 方法运行浏览器一次,我该怎么办?我知道@BeforeClass适用于一个类中的所有@Test方法,但是如果有可能有类该怎么办?在TestNG中有@BeforeSuite解决了这个问题。
抱歉,有这么多问题,但我已经尝试了很多,但没有成功:(多谢!

最佳答案

您提出了很多有关不同主题的问题。我会尽力解决问题。

重用浏览器,而不是为每个测试类打开一个新浏览器

只有实例化一次 WebDriver 并在所有测试中使用该对象,才能实现这一点。因此,不要在测试的 @BeforeClass 方法中实例化您的浏览器。

如何初始化您的WebDriver

在测试套件的第一个测试类中。这可能是一个专门用于打开浏览器的测试。或者您可以在所有测试中包含此功能,并且必须检查浏览器是否已初始化。

如何重用 WebDriver 对象并在测试类之间共享它?

我建议创建一个 Singleton存储 WebDriver 对象。这样所有的测试都可以访问它。但是,如果您并行运行测试,则需要付出更多努力才能使其线程安全。

使用不同的浏览器运行测试

您应该进行测试 @Parameterized 并期望一组 WebDriver 对象作为要执行的参数。

结合两者:不同的浏览器以及在测试之间重用浏览器

这可能会导致您想要为测试套件定义参数。但是,在标准 JUnit 4 中您无法执行此操作。我建议使用 this library 中的 ParameterizedSuite 运行器.

关于java - 在 BrowserStack 中的不同浏览器上运行 JUnit Suite 的配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22532339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com