NỘI DUNG BÀI HỌC
✅ Cài đặt Maven project trên IntelliJ IDEA
✅ Cài đặt thư viện TestNG Framework
✅ Chạy test cases với TestNG
✅ Cài đặt môi trường Maven trên Windows
🔆 Cách tải và cài biến môi trường Maven trên windows
Để tải Apache Maven trên máy tính chạy hệ điều hành windows, điều đầu tiên chúng ta cần làm là tải file maven zip từ trang chủ và giải nén ra. Sau đó chúng ta cần cài biến môi trường cho Maven để có thể sử dụng trên máy.
Điều kiện cần
Để cài đặt và sử dụng Maven, trước tiên chúng ta cần đảm bảo máy tính đã cài sẵn JDK và đã cấu hình biến môi trường JAVA_HOME.
🔆 Tải Apache Maven
Apache Maven được tải miễn phí, các bạn có thể vào trang chủ của Apache Maven để tải xuống file zip. Chọn cái Binary zip archive
Tại thời điểm bài viết là phiên bản 3.8.6 nhưng hiện tại mới nhất thì bản 3.9.5 đang là phiên bản mới nhất của Maven. Chúng ta nên dùng bản mới nhất.
Sau khi tải xong, các bạn tiến hành giải nén và đặt nó trong thư mục bất kỳ, nhưng hãy đặt trong thư mục ít đụng tới vì nếu lở các bạn xoá thì Maven sẽ không hoạt động được nữa. Sau khi giải nén thư mục sẽ trông giống như thế này.
Bây giờ chúng ta move nó sang ổ đĩa C:\ cho an toàn vì cũng ít đụng đến. An suggest thôi nhé.
🔆 Cài đặt biến môi trường cho Maven
Bước cuối cùng để chúng ta có thể sử dụng Maven là cài biến môi trường cho nó bằng cách.
Vào thanh tìm kiếm của windows gõ View advanced system settings hoặc Variable nó sẽ ra như bên dưới:
Trong System Properties dialog, chọn vào Advanced và chọn Environment Variables…
Trong Environment variables dialog, vào phần System variables chọn New
Trong này chúng ta sẽ tạo biến môi trường MAVEN_HOME và trỏ đến thư mục mà chúng ta đã lưu trước đó. Y như JDK chúng ta từng làm.
Nó sẽ như thế này
Tiếp theo chúng ta sẽ trỏ cái biến MAVEN_HOME này vào biến Path của hệ thống
Sau khi nhấn Edit thì sẽ hiện form tiếp tục nhấn New
Chúng ta nhập giá trị như sau: %MAVEN_HOME%\bin
Nghĩa là chúng ta chỉ định từ biến MAVEN_HOME trỏ đến thư mục bin của nó
Tiếp theo nhấn Ok Ok Ok là xong.
🔆 Kiểm tra phiên bản Maven đã cài đặt
Để kiểm tra quá trình cài đặt đã thành công hay chưa chúng ta cần mở CMD lên và chạy những lệnh sau:mvn -version
Nó sẽ hiển thị Maven version chúng ta vừa cài và cùng phiên bản JDK đã cài trước đó. Vậy là xong !!
Nếu các bạn check nó chưa ra thì ghi lệnh này thử nó có ra đường dẫn đúng chưa: echo %MAVEN_HOME%
Khi nó ra đường dẫn rồi mà chưa hiểu biến môi trường thì chúng ta cần restart máy lại 😁
✅ Tạo Maven project trên IntelliJ IDEA
Bước 1: Mở IntelliJ IDEA và chọn File > New > Project
Bước 2: Chọn tab New Project và nhập thông tin như mẫu
🔆 Các bạn chú ý:
- Số 4 chọn JDK 11 hoặc 17 cho ổn định (LTS)
- Số 5 chọn Maven
- Số 7 nhập gì cũng được. Không biết nhập gì thì để nguyên mẫu. Những thông tin này sẽ nằm trong file pom.xml sau khi create project.
Cuối cùng nhấn Create là xong !!
✅ Cài đặt thư viện TestNG Framework
✳️ Tổng quan về TestNG Framework
TestNG là 1 công cụ kiểm thử tự động được viết bằng Java, có chức năng quản lý việc tạo test case, thứ tự chạy test case và report sau khi test.
TestNG được xây dựng từ cảm hứng của 2 Framework là JUnit (Java) và NUnit (C#). NG là viết tắt của từ Next Generation.
Xem mindmap để có cái nhìn tổng quan hơn về testNG
Các tính năng nổi bật của TestNG
- Mô tả các thiết lập khác nhau khi kiểm thử phần mềm bằng file XML
- Phân nhóm kiểm thử
- Tạo mối quan hệ ràng buộc lẫn nhau giữa các module
- Xác lập thời điểm cho các xử lý trước và sau
- Cung cấp các chỉ dẫn Annotation – based để nhận diện phương thức test
- TestNG không yêu cầu có phương thức main()
- Các phương thức không cần tĩnh (static)
Một số ưu điểm của TestNG
- Nó cho phép tạo ra các bản báo cáo HTML của tiến trình thực thi.
- Các chú thích giúp việc kiểm thử dễ dàng hơn.
- Các trường hợp kiểm thử có thể được nhóm lại và được ưu tiên dễ dàng hơn.
- TestNG có các annotation logic hơn và dễ hiểu hơn.
- Có thể kiểm thử song song, tạo ra các log bug, tạo data Parameterized action.
- TestNG cho phép bạn xác định các test case phụ thuộc.
Các bước viết một test case sử dụng TestNG
- Viết các test case theo logic của phần cần kiểm thử
- Chèn các các chú thích của TestNG
- Thêm các thông tin bài test của bạn trong file testng.xml
- Chạy testNG
✳️ Cài đặt và sử dụng TestNG trên IntelliJ IDEA với Maven project
🔆 Cài đặt TestNG Framework
Các bạn chỉ cần add thư viện TestNG vào trong file pom.xml và build lại Maven.
Tải TestNG trên MVN repository: https://mvnrepository.com/artifact/org.testng/testng
Ở đây chúng ta sẽ dùng bản 7.4.0 cho nó ổn định và thích ứng với các thư viện khác nhé.
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
</dependency>
Các bạn chú ý là bỏ cái dòng <scope>test</scope>
ra nhé. Nghĩa là mình sẽ cho framework áp dụng trên toàn project chứ không chỉ riêng vùng package test. Nôm na là nó sẽ áp dụng cho cả 2 package main và test
Chổ này chúng ta nên tách project cũ ra vì TestNG sẽ theo một cú pháp và cấu trúc chạy test cases mới nên nếu dùng chung sẽ bị ảnh hưởng nội dung bài cũ.
Tiếp theo là thêm TestNG Framework vào pom.xml và nhớ nhấn reload lại maven project
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.anhtester</groupId>
<artifactId>RestAssuredTestNG2023</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.9</version>
</dependency>
</dependencies>
</project>
Thêm 2 cái thư viện SLF4J version mới nhất luôn nhé. Để nó thích ứng với Selenium bản mới nhất.
Còn về TestNG bản 7.4.0 thì nó thích ứng ở tất cả các phiên bản của các thư viện khác.
🔆 Sử dụng TestNG Framework tạo test case
Chúng ta tạo một package mới (com.anhtester) và tạo một class mới (DemoTestNG) để chạy thử xem mình cài đặt được chưa nhé.
Tiếp theo chúng ta thêm @Test
trên mỗi function để tạo ra một test case. Nó tự hiểu là 1 test case nên sẽ hiển thị nút Run cho từng function.
package com.anhtester;
import org.testng.annotations.Test;
public class DemoTestNG {
@Test
public void testCreateUser() {
System.out.println("Đây là test case testCreateUser");
}
@Test
public void testEditUser() {
System.out.println("Đây là test case testEditUser");
}
}
Như vậy chúng ta không cần dùng hàm main trong Java nữa. Rất tiện lợi vì trong một class chúng ta có thể tạo ra nhiều test cases chứ không chỉ mỗi một hàm main.
✅ Cách chạy test theo Package, Class, Method trong file XML
🔆 Cách tạo file testng.xml
Bước 1: tạo một directory trong project vị trí bất kỳ để lưu trữ các file XML
Bước 2: right click vào directory chọn New > File > đặt tên file .xml
VD: SuiteTest01.xml
Thư mục mẫu An tạo nằm trong src/test/resources/suites/SuiteTest01.xml
Lưu ý:
- File này tên là gì cũng được, không nhất thiết phải là testng.xml, miễn là nó là file xml. Tuy nhiên, nên tránh lấy trùng tên với file config của thằng khác ví dụ như file pom.xml của Maven.
- File này nằm ở đâu trong Project cũng được, không nhất thiết phải nằm ở ngay dưới folder Project, nhưng tốt nhất là ko nên để nó trong package code nào, nên tách riêng ra.
Nội dung của file testng.xml:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite 1" verbose="1">
<test name="Test 1">
<classes>
<class name="com.anhtester.DemoTestNG" />
</classes>
</test>
</suite>
- Dòng đầu tiên khai báo !DOCTYPE có thể có hoặc không, nhưng nếu bạn ko có thì khi run TestNG sẽ thông báo “It is strongly recommended to add “<!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd” >” at the top of your file, otherwise TestNG may fail or not work as expected.“
- TestNG bắt buộc phải có khai báo thẻ <suite> và <test>, nếu bạn bỏ 1 trong 2 cái khai báo đó thì TestNG sẽ báo lỗi. Lưu ý: <test> ở đây không phải là 1 test case, test case là cái khai báo trong class java.
- Thẻ <suite> và <test> có attribute name, có thể đặt tên tùy ý, không được đặt trùng tên cho các thẻ.
- Một file TestNG chỉ có 1 thẻ <suite> duy nhất và <suite> có thể có nhiều thẻ <test>.
- Trong thẻ <test> có thể có 0 hoặc nhiều đối tượng test: <packages>, <classes>, <methods>.
🔆 Cách run test theo Class
- Đối tượng phía trong của <test> là <classes>
- Trong <classes> sẽ điền list các class mà mình muốn run test.
name
là [packageName].[className]. Ví dụ: com.anhtester.DemoTestNG
Tạo thêm class thứ 2 để có thể gọi dùng
Khi run xong, kết quả sẽ hiển thị như sau:
Nó sẽ chạy hết test cases trong các class mà mình chỉ định. Rất tiện lợi đúng không. Thay vì click chạy từng file class thì này chỉ cần click chạy 1 file XML là xong.
Tương tự thì chúng ta có thể chạy hết 1 package hoặc chỉ định cụ thể những test cases nào đó luôn.
🔆 Cách run test theo Package
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite by package" verbose="1">
<test name="Test by package">
<packages>
<package name="com.anhtester"></package>
</packages>
</test>
</suite>
- Đối tượng phía trong của <test> là <packages>
- Trong <packages> sẽ điền list các package mà ta muốn run test. Name là [packageName] Ví dụ: com.anhtester
LƯU Ý: chỉ được chọn package sau cùng chứa Class chứ không được gọi package còn chứa package con bên trong.
Khi run xong, kết quả sẽ hiển thị như sau:
🔆 Cách run test theo Method
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite by method" verbose="1">
<test name="Test by method">
<classes>
<class name="com.anhtester.DemoTestNG">
<methods>
<include name="testCreateUser"/>
</methods>
</class>
</classes>
</test>
</suite>
- Để run được riêng <method> thì phải có <class>
- Method muốn được run thì phải sử dụng <include>
Khi run xong, kết quả sẽ hiển thị như sau:
🔆 Cách run test hỗn hợp package, class và method
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite All" verbose="1">
<test name="Test by Package">
<packages>
<package name="com.anhtester"/>
</packages>
</test>
<test name="Test by Class and Method">
<classes>
<class name="com.anhtester.DemoTestNG">
<methods>
<include name="testCreateUser"/>
</methods>
</class>
<class name="com.anhtester.DemoTestNG02"/>
</classes>
</test>
</suite>
Chúng ta có thể kết hợp nhiều kiểu chạy test lại với nhau theo ý muốn. Tuy nhiên cần xây dựng cho phù hợp, đảm bảo các quy tắt của từng kiểu như trên.
Khi run xong, kết quả sẽ hiển thị như sau:
🔆 Cách sử dụng chức năng Include và Exclude
Include: được dùng trong các trường hợp sau đây:
- Trong 1 package có nhiều package, nhưng chỉ muốn run số ít package trong đó.
- Trong 1 Class có nhiều method, chỉ muốn run số ít method (xem lại mục chạy với Method ở trên).
Exclude: được dùng trong các trường hợp sau đây:
- Trong 1 package có nhiều package, nhưng muốn không run một vài package trong đó.
- Trong 1 Class có nhiều method, nhưng muốn không run một vài method.
Ví dụ:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite by exclude method" verbose="1">
<test name="Test by exclude method">
<classes>
<class name="com.anhtester.DemoTestNG">
<methods>
<exclude name="testCreateUser"/>
</methods>
</class>
</classes>
</test>
</suite>
Tương tự Package và Class cũng khai báo exclude như vậy nhé.