Bài 4 Tạo và quản lý dự án Automation Test với serenity-maven


Trong bài hướng dẫn này mình sẽ hướng dẫn lại nhưng là sẽ tập trung luôn vào việc dùng archetype của serenity

Về cơ bản các bước là như nhau. Chúng ta chỉ cần thay đổi lại giá trị filter

Sau khi bật console / cmd lên di chuyển vào thư mục eclipse-workspace ( thư mục default được tạo bởi eclipse editor) bạn hãy gõ lệnh trên.

mvn archetype:generate -Dfilter=serenity

Trên màn hình lúc này sẽ liệt kê toàn bộ các archetype ( mẫu dự án). Sẽ có khoảng 6 dự án mẫu. Chọn số 5 rồi ấn Enter. Ứng với mẫu dự án sử dụng selenium2 và Junit với mô hình Page Object mode.

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains):

Tiếp đó màn hình sẽ liệt kê toàn bộ version của archetype này, theo mặc định nó sẽ tự động lựa chọn version mới nhất. Nếu ko có gì bạn cứ để thế rồi ấn enter tiếp

Tiếp đó maven sẽ yêu cầu bạn cung cấp các thông tin theo tiêu chuẩn của một dự án mà maven quản lý như groupIDartifactId version 

Mình sẽ giải thích qua một chút về ý nghĩa của 3 thông số này

1. groupID

Có bao giờ bạn tự hỏi maven nó tự động lấy các gọi resource ở đâu về không?

==> Nó lấy ở một cái kho global nào đó. 

Đây là như repository global hay tạm hiểu là cái kho của thế giới và đặc biệt nó miễn phí, thích chưa.

Thế nhưng phải hỏi là ai đã hảo tâm đưa những thứ mà mình cần lên trên cái kho ấy ?

==> Từ thông tin groupId mình có thể  lần ra họ. Bởi giá trị này chính là định danh cho tổ chức đã tạo ra những thứ mà bạn đang lấy về dùng. 

Giá trị này không được trùng nhau chính bởi thế nó thường chính tên miền (domain) trang web của tổ chức để đặt, vì tên miền chắc chắn là ko bao giờ trùng nhau. nhưng thay vì viết đúng tên miền người ta sẽ viết ngược lại. Họ cũng có thể thêm các thông tin khác sau domain này để tạo ra groupId.

Giá trị này cũng chỉ cho ta thấy quyền sở hữu các gói resource thuộc về ai.

Ví dụ: 

Khi bạn tìm kiếm các gói resource liên quan tới selenium.  Bạn sẽ thấy các thông tin sau


Thì phần đầu tiên org.seleniumhq.selenium chính là giá trị của groupId.

Bây giờ ta chỉ cần viết ngược lại seleniumhq.org là có ngay trang chủ của selenium. Vậy là không khó khăn gì để vào phần About tìm kiếm thông tin những ai đã đóng góp để tạo ra nó.

Tương tự như vậy bạn thử với Junit mà xem https://mvnrepository.com/search?q=junit
Bạn cũng sẽ thấy 
org.junit.jupiter » junit-jupiter-api viết ngược lại junit.org xem có ra gì không nhé.

Về cách đặt tên thì nên dùng chữ thường, không dùng CHỮ HOA và cách nhau bởi dấu chấm .
dấu chấm như dấu chấm hết câu đó.

Theo mặc định thì nó sẽ sử dụng luôn giá trị groupId để tạo ra package trong project của bạn

2. artifactId
Cũng giống như groupId nó dùng để định danh nhưng chỉ là cho các project của groupId đó.

Bạn hãy tưởng tượng rằng groupId là công ty thì artifactId chính là các dự án của công ty đó.

Tiếp tục nhìn vào ví dụ này


Ta thấy artifactId  chính là phần phía sau của groupId như là selenium-java, selenium-api và selenium-server.

Cái này là duy nhất trong groupId nhưng nó có thể giống với artifactId của các groupId khác. Đơn giản như kiểu hai công ty cùng sản xuất một loại mặt hàng thôi.

3. version
Cái này chắc thôi nói đi, hiển nhiên ai cũng biết. Không biết thì thôi luôn. Tự search google nha.

4. Cơ chế lưu trữ 
Khi bạn cài đặt Maven thì nó sẽ tạo ra cho bạn một cái thư mục có tên là .m2 để biết nó nằm ở đâu bạn gõ lệnh echo $M2_HOME trên console nó sẽ in ra cho bạn. ( điều kiện là bạn phải setup biến môi trường cho nó ) 

Với Windows nếu dùng chocolate nó tự động setup cho bạn rồi. còn nếu bạn đã làm bằng tay thì đương nhiên khỏi in, bạn tự biết.

Thường thì nó sẽ nằm ở trong thư mục user home. ( C:\Users\jacob.depzai\.m2)

Trong thư mục này có một thư mục tên là repository. Đây chính là cái bản sao của cái maven repository global như đã nói ở trên nhưng hạn chế hơn ở chỗ nó chỉ chứa resource mình cần chứ không phải tất cả.

Cấu trúc thư mục trong cái kho này sẽ được đặt tên và phân cấp theo groupId và artifactId, version

Ví dụ

Nếu bạn thấy trong file pom có một dependency là 

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.0.0-alpha-1</version>
</dependency>

thì bạn sẽ thấy trong .m2\repository có một 
thư mục tên org
Trong org có thư mục con là seleniumhq
Trong thư mục seleniumhq lại có một thư mục con là selenium
==> lấy đủ thông tin của groupId để tạo cấu trúc thư mục

Sau đó nó tiếp tục lấy thông tin của artifactId để tạo các thư mục con bên trong
Nghĩa là trong thư mục selenium sẽ có thư mục con tên là selenium-java

Sau đó nó tiếp tục lấy thông tin version để tạo thư mục.
Nghĩa là trong thư mục selenium-java sẽ có thư mục con tê là 4.0.0-alpha-1

Cuối cùng mới là cái ta cần chính là cái file resource có phần mở rông là selenium-java-4.0.0-alpha-1.jar

5. Tại sao lại gọi là dependency

Như nghĩa của nó phụ thuộc. Có nghĩa là để hoàn thành tính năng nào đó trong bản thân của file selenium-java-4.0.0-alpha-1.jar nó cũng cần sử dụng một số những tính năng từ các gói resource khác. 

Để kiểm tra những gói mà nó phụ thuộc vào ta chỉ cần click vào version muốn lấy 

Kéo xuống một chút bạn sẽ thấy heading là 

Compile Dependencies (7)


Nghĩa là nó sẽ depend on tới 7 cái gói khác

Bạn không cần phải khai báo 7 cái dependency này vào file POM.xml.  chỉ cần khai báo đúng cái mình cần, những cái phụ thuộc tự động nó sẽ được kéo về. Hay chưa. 

Và khi version thay đổi nó cũng sẽ tự động update các dependency có version tương ứng.

Có vấn đề gì đừng ngần ngại cứ liên lạc với mình theo skype id: vu.the.linh

Nhận xét

Bài đăng phổ biến từ blog này

Tự động hoá kiểm thử với WebDriver/RestAssured(Rest API) và Serenity BDD

Bài 2: Cài đặt môi trường và công tác chuẩn bị

khóa học Selenium WebDriver online cho cá nhân