我想运行这种形式的两个类似的Junit / Selenium测试:
@Test
public void findMyLinkTest() {
running(testServer(1234, fakeApplication(inMemoryDatabase())), HTMLUNIT, browser -> {
browser.goTo("http://localhost:1234");
WebDriver driver = new ChromeDriver();
driver.get("http://localhost:1234");
List<WebElement> myLinks = driver.findElements(By.xpath("blahblahblah"));
assertTrue(myLinks.size()==1);
driver.close();
});
}
但是@Before我想
将数据库变量(输入到我的应用程序中)更改为测试值
为两个测试设置
driver
之后
重置数据库变量
发起
driver.close()
我的之前和之后方法似乎无法识别其他块中的变量(例如,@ After认为从未实例化驱动程序)。
最佳答案
做到这一点的好方法是创建一个单独的类来进行设置和拆卸,并确保其他测试类可以扩展该类。
以下代码可以帮助您理解我的意思。
您的基本测试类应如下所示。
public abstract class BaseTest {
protected WebDriver driver;
protect Database dbCon;
@Before
public void setup(){
driver = new FirefoxDriver();
//initialize teh connection same way
}
@After
public void tearDown(){
driver.close();
dbCon.close() ;
}
}
您的其他考试班
public class MyTest extends BaseTest{
@Test
public void test1(){
//here you will have access to both
}
}