如何围绕我的JUnit测试设置和拆除变量(和驱动程序)?

时间:2017-03-10 11:32:35

标签: java mongodb selenium testing junit

我想对这种形式进行两次类似的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 认为驱动程序从未实例化过。例如)。

3 个答案:

答案 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的工作示例(例如,使用ChromeFirefox等)。