1. 程式人生 > 實用技巧 >基於TestNG和Maven的介面測試之(一)- 基礎配置

基於TestNG和Maven的介面測試之(一)- 基礎配置

基於TestNG的介面測試之(一)- 基礎配置

目錄

TestNG基本介紹

TestNG是Java中的一個測試框架,是一個目前很流行實用的單元測試框架,有完善的用例管理模組,配合Maven能夠很方便管理依賴第三方外掛。使用TestNG可以做功能、介面、單元、整合的自動化測試,最常見的是結合selenium做Web頁面的自動化測試和結合httpclient的介面測試,它使用Java註釋去寫測試方法。主要特點:

  • 強大的註解功能;
  • 資料驅動;
  • 靈活的測試配置;
  • 支援多種併發測試策略;
  • 可以和多種工具(外掛)協同使用,比如Eclipse、IntelliJ IDEA和Maven等。

測試人員一般用TestNG來寫自動化測試,開發人員一般用Junit寫單元測試,TestNG適合測試人員使用的原因:

  • 比Junit涵蓋功能更全面的測試框架;
  • Junit更適合隔離性比較強的單元測試;
  • TestNG更適合複雜的整合測試。

TestNG和Maven協同使用

前提條件: 安裝Java SDK。

安裝和配置

  1. 安裝與配置下載JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  2. Eclipse:https://eclipse.org/downloads/
  3. Intellij IDEA: https://www.jetbrains.com/idea/
  4. Maven:http://maven.apache.org/download.cgi#

Maven配置和使用

環境配置

  1. 將 Maven 下載到本地解壓後

  2. 設定環境變數"我的電腦"右鍵選單->屬性->高階->環境變數->系統變數->新建

    • 變數名:MAVEN_HOME
    • 變數值:D:\Java_maven\apache-maven-3.6.3\
  3. 找到"Path"變數名 ->"編輯"新增如下:

    • 變數名:Path
    • 變數值:MAVEN_HOME%\bin;
  4. 新增好了以後,開啟"cmd"執行"mvn -version"來測試Maven是否配置正確

    Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
    Maven home: D:\Java_maven\apache-maven-3.6.3\bin\..
    Java version: 1.8.0_161, vendor: Oracle Corporation, runtime: D:\Java\jdk1.8.0_161\jre
    Default locale: zh_CN, platform encoding: GBK
    OS name: "windows 10", version: "10.0", arch: "x86", family: "windows"
    

Maven的配置

  1. 配置Maven倉庫

    將maven的倉庫指向自己的原始碼存在的位置。

    • 修改 Maven 倉庫的路徑。 開啟...\apache-maven-3.6.3\conf\settings.xml 檔案, 大概在49行到57行之間的位置做如下修改:

      <localRepository>D:\\Git_genejiang2012\\my_testng\</localRepository>
      
  2. 開啟IDEA
    2.1 新建Maven的project

    2.2 開啟IDEA的Settings, 修改Maven的路徑, maven的路徑為maven存放的本地路徑

    2.3 開啟專案檔案下的POM.xml檔案

    • 增加maven的外掛下載路徑

      <dependencies>
          <dependency>
              <groupId>org.testng</groupId>
              <artifactId>testng</artifactId>
              <version>7.1.0</version>
              <scope>test</scope>
          </dependency>
      </dependencies>
      
    • 加入testng的版本資訊, maven自動下載相關外掛

      <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.1.0</version>
            <scope>test</scope>
        </dependency>
      </dependencies>`
      
    • 增加Build的資訊

      <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>${jdk.version}</source><!-- 原始碼使用的開發版本 -->
                    <target>${jdk.version}</target><!-- 需要生成的目標class檔案的編譯版本 -->
                    <!-- 解決maven test命令時console出現中文亂碼亂碼 -->
                    <argLine>-Dfile.encoding=UTF-8</argLine>
                    <testFailureIgnore>true</testFailureIgnore>
                    <suiteXmlFiles>
                        <suiteXmlFile>testNG.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
      
            <!-- 新增外掛 關聯testNg.xml -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.15</version>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                    <suiteXmlFiles>
                        <file>testNG.xml</file>
                    </suiteXmlFiles>
                    <!--<workingDirectory>target/</workingDirectory>-->
                </configuration>
            </plugin>
        </plugins>
      
        <!--配置resources 資源-->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.xls</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
      </build>
      

    2.4 在當前project建立testNG.xml

    <?xml version="1.0" encoding="utf-8" ?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
      <suite name="my_test" parallel="false">
          <test name="testDemo1">
              <classes>
                  <class name="com.genestudio.test.TestDemo"></class>
              </classes>
          </test>
      </suite>
    

    2.5 新建package, com.genestudio.test, 在該package下面建立TestDemo

    
      package com.chiefclouds.test;
    
      import org.testng.annotations.AfterClass;
      import org.testng.annotations.AfterGroups;
      import org.testng.annotations.AfterMethod;
      import org.testng.annotations.AfterSuite;
      import org.testng.annotations.AfterTest;
      import org.testng.annotations.BeforeClass;
      import org.testng.annotations.BeforeGroups;
      import org.testng.annotations.BeforeMethod;
      import org.testng.annotations.BeforeSuite;
      import org.testng.annotations.BeforeTest;
      import org.testng.annotations.Test;
    
    
      public class TestDemo {
          @BeforeSuite
          public void beforeSuite(){
              System.out.println("Before Suite!");
          }
    
          @AfterSuite
          public void afterSuite(){
              System.out.println("After Suite!");
          }
    
    
          @BeforeTest
          public void beforeTest(){
              System.out.println("Before Test");
          }
    
      }
    

    2.6 maven中run test, 檢視log 結果

      [INFO] -------------------------------------------------------
      [INFO]  T E S T S
      [INFO] -------------------------------------------------------
      [INFO] Running TestSuite
      Hello TestNG
      [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.961 s - in TestSuite
      [INFO] 
      [INFO] Results:
      [INFO] 
      [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
      [INFO] 
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time:  3.535 s
      [INFO] Finished at: 2020-07-15T16:50:13+08:00
      [INFO] ------------------------------------------------------------------------
    

    2.7 檢視targe中生成中測試報告,${project_dir}$\target\surefire-reports\emailable-report.html

     ![](https://raw.githubusercontent.com/genejiang2012/image_hosting/master/article/report.png)