Java 如何在其他测试中重用(包括)Junit测试块
我对JAVA世界相当陌生——来自ColdFusion背景——一直在学习JAVA,因为我正在学习SeleniumWebDriver/JUnit。我已经编写了几个测试类来测试遵循类似结构的管理功能Java 如何在其他测试中重用(包括)Junit测试块,java,selenium-webdriver,junit4,Java,Selenium Webdriver,Junit4,我对JAVA世界相当陌生——来自ColdFusion背景——一直在学习JAVA,因为我正在学习SeleniumWebDriver/JUnit。我已经编写了几个测试类来测试遵循类似结构的管理功能 public class myclass{ public static WebDriver driver; @BeforeClass public static void startDriver(){ driver = new FirefoxDriver(); driver.get("so
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”标记)登录代码,以便在对登录页面功能进行更改时,我只需在一个地方进行更改。Java没有像ColdFusion或C这样的词法include语句。这是出于设计,因为在编译之前粘贴源代码是在模块之间共享代码的一种非常不干净的方式 但是还有很多其他的方法来解决这个问题。这里有两个:
setUp
和tearDown
方法时,您可以让它们扩展一个公共基类,并在基类中实现这些方法一次Java没有像ColdFusion或C这样的词法include语句。这是出于设计,因为在编译之前粘贴源代码是模块之间共享代码的一种非常不干净的方式 但是还有很多其他的方法来解决这个问题。这里有两个:
setUp
和tearDown
方法时,您可以让它们扩展一个公共基类,并在基类中实现这些方法一次您可以使用注释来实现这一点。带注释的方法将在每个@Test带注释的方法之前运行。类似地,如果需要,您可以在每次单元测试后使用注销。您可以使用注释来完成此操作。带注释的方法将在每个@Test带注释的方法之前运行。类似地,如果需要,您可以在每次单元测试后使用注销。您可以在基本父类中实现myLogin()功能,您需要在所有测试类中扩展该功能,以便在各种测试中访问该功能:
public abstract class MyBaseTest {
public void myLogin() {
<some login code>
}
}
public class MyClass extends MyBaseTest {
@Test
public void somefunction() {
super.myLogin();
}
}
公共抽象类MyBaseTest{
公共void myLogin(){
}
}
公共类MyClass扩展了MyBaseTest{
@试验
公共函数(){
super.myLogin();
}
}
您可以在基本父类中实现myLogin()功能,您需要在所有测试类中扩展该功能,以便在各种测试中访问该功能:
public abstract class MyBaseTest {
public void myLogin() {
<some login code>
}
}
public class MyClass extends MyBaseTest {
@Test
public void somefunction() {
super.myLogin();
}
}
公共抽象类MyBaseTest{
公共void myLogin(){
}
}
公共类MyClass扩展了MyBaseTest{
@试验
公共函数(){
super.myLogin();
}
}
如果您使用的是相当新版本的JUnit,您还可以查看规则以提供类似的支持。如果您使用的是相当新版本的JUnit,您可以在@Before
之前注释myLogin(),使每个@Test
方法之前执行(即将其视为设置方法),您还可以查看规则以提供类似的支持。您可以使用@Before
注释myLogin(),以使每个@Test
方法(即将其视为一个设置方法)都能完美执行-TYVM-我忘了“超类”的概念可以完美执行-TYVM-我忘了“超类”的概念