我是JAVA世界的新手 - 来自ColdFusion背景 - 并且一直在学习Java,因为我正在学习Selenium WebDriver / JUnit。我编写了几个测试类,用于测试遵循类似结构的管理功能。
public class myclass{
public static WebDriver driver;
@BeforeClass
public static void startDriver(){
driver = new FirefoxDriver();
driver.get("some url");
}
@Test
public void myLogin(){
some login code
}
@Test
public void somefunction() {
other admin function to test
}
我的问题是这个 - 因为我的所有测试都要求用户登录 - 我最终不得不一遍又一遍地重复使用“mylogin”测试代码。如何编写测试只是简单地“包含”(如ColdFusion中的“cfinclude”标签)登录代码,这样如果对登录页面功能进行了更改 - 我只需要在一个地方更改它。
答案 0 :(得分:3)
Java没有像ColdFusion或C这样的词汇包含语句。这是设计原因,因为在编译之前粘贴源代码是一种在模块之间共享代码的非常不干净的方式。
但是还有很多其他方法可以解决这个问题。这是两个:
setUp
and tearDown
methods。这些方法在每个测试方法之前和之后执行。请注意,测试类可以相互继承。因此,当您有许多具有相同setUp
和tearDown
方法的测试类时,您可以使它们扩展一个公共基类并在基类中实现这些方法一次。答案 1 :(得分:1)
您可以在基本父类中实现myLogin()功能,您需要在所有测试类中进行扩展,以便在各种测试中访问此功能:
public abstract class MyBaseTest {
public void myLogin() {
<some login code>
}
}
public class MyClass extends MyBaseTest {
@Test
public void somefunction() {
super.myLogin();
}
}
答案 2 :(得分:0)