14. JUnit

大家好! 带出隐藏在您体内的测试忍者,因为今天我们将为 JUnit 框架设置环境。

JUnit 环境设置

步骤 1:

步骤 2:

以下几点将使该过程更加容易理解

  1. 您将被重定向到 GitHub。 在“普通的 JAR”下,可以使用 junit 和 hamcrest-core JAR。
  2. 点击“junit.jar”会将您重定向到包含下载链接的页面。 点击最新版本的“jar”链接(撰写本文时为 v4.12)。 它将自动下载到您的系统。
  3. 接下来,点击“hamcrest-core.jar”。 与上述类似,单击最新的“jar”下载链接(截至本帖子发布之日起为 v1.3)。
  4. 这样,两个必需的 jar 都立即下载到您的系统中。

下图是突出显示步骤的图像

Junit github download

步骤 3:

下一个工作是在 Eclipse IDE 中将这两个 jar 添加到我们的项目中。 该过程与我们在 13. WebDriver 设置 中遵循的过程非常相似。请参考该指南以获取分步说明以及屏幕截图。

  1. 打开 Eclipse IDE 并导航到相应的工作区。
  2. 右键单击“设置 Selenium 的项目 -> 构建路径 -> 配置构建路径…”
  3. 确保选择了“库”选项卡。 点击“添加库…”
  4. 选择“用户库”,接下来单击“用户库…”
  5. 单击“新建…”,并为库“JUnit4”命名,然后单击“确定”。
  6. 在“用户库”弹出窗口中,确保选择了新创建的 Junit4 库。 点击“添加外部 JAR …”
  7. 导航到本地系统中下载的与 junit 相关的 jar 的保存路径。 选择 junit 和 hamcrest-core JAR,然后单击“打开”

Junit user library

相应地单击 OK 和“完成”按钮,新创建的 JUnit4 库将添加到项目构建路径,如下所示,

Junit jars added

这样,JUnit 4 的环境就设置好了!

在 JUnit4 中运行 WebDriver 测试

展望未来,我们所有的测试都将使用 JUnit 框架。 因此,是时候通过右键单击“项目->新建->包”(已设置 Selenium 和 junit)创建新包了。 我已将包命名为“com.blog.junitTests”。

我们的下一步是创建一个类。 右键单击“新创建的包 -> 新建 -> 类”。 给它起一个名字“FirstJunitTest.java”,然后单击“完成”。 您的 IDE 现在看起来应该与此类似,

JUnit implementation

现在我们已经准备好教程的文件了,让我们采用与“第一个测试脚本 – 通过启动 Firefox”帖子中相同的方案。

  1. 打开 Firefox 浏览器。
  2. 导航到“https://www.google.com/
  3. 将页面标题声明为“Google”。
  4. 根据声明结果在控制台上显示一条消息。
  5. 关闭浏览器。

选择相同方案的原因是代码说明保持不变。 无论有没有 JUnit 框架,这都将帮助您清楚地看到代码中的更改。

注意 :这不是 JUnit 教程。 但是,将在需要时提供基本的解释,以使您有一个全面的了解。 有关详细和完整的信息,请参考 http://junit.org/junit4/代码 如下:

package com.blog.junitTests;
import org.junit.*;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class FirstJunitTest {
    //Declaring variables
    private WebDriver driver; 
    private String baseUrl;
    private String pageTitle;
    private String expectedTitle;
    @Before
    public void setUp() {
        //Selenium version 3 beta releases require system property set up
        System.setProperty("webdriver.gecko.driver", 
                       "E:\\Selenium\\geckodriver-v0.10.0-win64\\geckodriver.exe");
        // Create a new instance for the class FirefoxDriver
        // that implements WebDriver interface
        driver = new FirefoxDriver();
        // Assign the URL to be invoked to a String variable
        baseUrl = "https://www.google.com";
        pageTitle = "";
        expectedTitle = "Google";
    }
    @Test
    public void testPageTitle(){
        // Open baseUrl in Firefox browser window
        driver.get(baseUrl);
        // Get the page title and assign to a String variable
        pageTitle = driver.getTitle();
        // Check if obtained page title matches with the expected title
        // and print the console output accordingly
        if (pageTitle.equals(expectedTitle)) {
            System.out.println("Hello World! Result is as expected.");
        } else {
            System.out.println("Hello World! Assertion failed!");
        }
    }
     @After
      public void tearDown() throws Exception{
        // Close the Firefox browser
        driver.quit();
    }
}

如果将此代码与实现 JUnit 之前的代码进行比较,将会有明显的变化,

  1. 注解:@Before@Test@After
  2. 方法:setUp()testPageTitle()tearDown()
  3. 类开头的私有变量声明
  4. 在新创建的方法下,将相同的代码分为几部分

这会使视力模糊吗? 不要担心! 让我们立即清除雾气!! 注意 :这些将特定的含义传达给 JUnit。 他们告诉 JUnit,应该附加到它的public void方法,

  • @Test – 被当作测试方法运行。
  • @Before – 在指定的每种测试方法之前运行。 这用于各种目的。 读取或分配数据,初始化或如果多个测试需要先创建相似的对象才能执行,则最好在@Before注解的方法下进行指定。
  • @After – 在执行每种测试方法之后运行。 通常,会指定与环境清理相关的命令,例如,关闭打开的资源/数据库连接,删除临时数据,释放内存等。即使@Before@Test方法引发异常,也可以保证运行带after注解的方法。

键入这些注解,在它们下方会出现一条弯曲的线。 悬停时,Eclipse将建议所有可能的快速修复。 单击建议导入org.junit包的第一个修复程序。

JUnit import packages

在这三个注解下的方法公开的 ,返回类型为void。 在junit.framework.TestCase类下,我们有setUp()tearDown()方法。 最佳实践是覆盖这些方法,以分别编写初始化代码和清除代码。 这不仅可以防止内存泄漏,还可以使代码更易于阅读。 JUnit 首先调用setUp()方法,然后调用test方法,最后调用tearDown()方法。 对于附加到@Test的每个测试方法,都会发生这种情况。

要运行测试

右键单击“类 -> 运行方式 -> JUnit 测试”。

JUnit4 test execution

将打开一个新的 Firefox 浏览器窗口,并按照代码执行测试步骤。 结果将在 Eclipse IDE 的 JUnit 视图中打开,其中显示成功绿色 条和错误红色 条。

JUnit4 test success

显示测试用例名称。 发生错误时,将显示栈跟踪。 快捷方式可用于重新运行测试,仅显示失败,查看上一个和下一个失败的测试等。下面是显示错误的示例屏幕截图。

JUnit4 test error

我们到了这篇文章的结尾。 现在轮到您尝试一些实现 JUnit 框架的方案,并在评论部分留言,以防您遇到问题或得到澄清。