我想对这种形式进行两次类似的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
和 @After
重新设置数据库变量
发起driver.close()
My Before和After方法似乎无法识别其他块中的变量( @After 认为驱动程序从未实例化过。例如)。
答案 0 :(得分:2)
这样做的好方法是创建一个单独的类来进行设置和拆卸,并确保其他测试类扩展了这个类。
以下代码可能会帮助您理解我在说什么。 你的基础测试类应该是这样的。
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
}
}
答案 1 :(得分:0)
您可以使用@BeforeClass qnd @AfterClass进行一次初始化/拆除类中包含的测试集所使用的资源
答案 2 :(得分:0)
使用String my_key
int my_key.hashCode()
/ @BeforeClass
进行类中所有测试的常见设置/拆卸。在此repository中,您可以找到JUnit + WebDriver的工作示例(例如,使用Chrome,Firefox等)。