我想运行这种形式的两个类似的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
    }
}

08-04 16:58