Concordion - Lệnh verifyRows
Lệnh Concordion verifyRows có thể được sử dụng để kiểm tra nội dung của một tập hợp được hệ thống trả về. Ví dụ: nếu chúng tôi thiết lập một tập hợp người dùng trong hệ thống và thực hiện tìm kiếm từng phần trên họ, thì hệ thống sẽ trả về các phần tử phù hợp, nếu không các thử nghiệm chấp nhận của chúng tôi sẽ không thành công.
Hãy xem xét yêu cầu sau:
<table>
<tr><th>Users</th></tr>
<tr><td>Robert De</td></tr>
<tr><td>John Diere</td></tr>
<tr><td>Julie Re</td></tr>
</table>
<p>Search for J should return:</p>
<table>
<tr><th>Matching Users</th></tr>
<tr><td>John Diere</td></tr>
<tr><td>Julie Re</td></tr>
</table>
Nếu chúng ta muốn viết một đặc tả cho một hàm tìm kiếm như vậy sẽ tìm kiếm và trả về một tập hợp, thì đặc tả sẽ như sau:
<table concordion:execute = "addUser(#username)">
<tr><th concordion:set = "#username">Username</th></tr>
<tr><td>Robert De</td></tr>
<tr><td>John Diere</td></tr>
<tr><td>Julie Re</td></tr>
</table>
<p>Search for "<b concordion:set = "#searchString">J</b>" should return:</p>
<table concordion:verifyRows = "#username : search(#searchString)">
<tr><th concordion:assertEquals = "#username">Matching Usernames</th></tr>
<tr><td>John Diere</td></tr>
<tr><td>Julie Re</td></tr>
</table>
Khi Concordion phân tích cú pháp tài liệu, nó sẽ thực thi addUser () trên mỗi hàng của bảng đầu tiên và sau đó đặt chuỗi tìm kiếm là J. Tiếp theo, Concordion sẽ thực thi hàm tìm kiếm sẽ trả về một đối tượng Lặp lại có thứ tự lặp lại có thể dự đoán được, (ví dụ: một Danh sách, LinkedHashSet hoặc TreeSet), verifyRows chạy cho từng mục của bộ sưu tập và chạy lệnh khẳng địnhEquals.
Thí dụ
Hãy để chúng tôi có một IDE Eclipse đang hoạt động tại chỗ và làm theo các bước dưới đây để tạo một ứng dụng Concordion -
Bươc | Sự miêu tả |
---|---|
1 | Tạo một dự án với một tên concordion và tạo ra một gói com.tutorialspoint dướisrc thư mục trong dự án đã tạo. |
2 | Thêm các thư viện Concordion cần thiết bằng cách sử dụng tùy chọn Thêm JAR bên ngoài như được giải thích trong chương Concordion - Ứng dụng đầu tiên . |
3 | Tạo Hệ thống lớp Java theo gói com.tutorialspoint . |
4 | Tạo lớp Fixture SystemFixture theo gói specs.tutorialspoint . |
5 | Tạo Thông số kỹ thuật html System.html trong gói specs.tutorialspoint . |
6 | Bước cuối cùng là tạo nội dung của tất cả các tệp Java và tệp đặc tả và chạy ứng dụng như được giải thích bên dưới. |
Đây là nội dung của tệp System.java -
package com.tutorialspoint;
import java.util.HashSet;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
public class System {
private Set<String> users = new HashSet<String>();
public void addUser(String username) {
users.add(username);
}
public Iterable<String> search(String searchString) {
SortedSet<String> matches = new TreeSet<String>();
for (String username : users) {
if (username.contains(searchString)) {
matches.add(username);
}
}
return matches;
}
}
Sau đây là nội dung của tệp SystemFixture.java:
package specs.tutorialspoint;
import org.concordion.integration.junit4.ConcordionRunner;
import org.junit.runner.RunWith;
import com.tutorialspoint.System;
@RunWith(ConcordionRunner.class)
public class SystemFixture {
System system = new System();
public void addUser(String username) {
system.addUser(username);
}
public Iterable<String> search(String searchString) {
return system.search(searchString);
}
}
Sau đây là nội dung của tệp System.html -
<html xmlns:concordion = "http://www.concordion.org/2007/concordion">
<head>
<link href = "../concordion.css" rel = "stylesheet" type = "text/css" />
</head>
<body>
<h1>System Specifications</h1>
<p>We are building specifications for our online order tracking application.</p>
<p>Following is the requirement to add a partial search capability on user names:</p>
<div class = "example">
<h3>Example</h3>
<table concordion:execute = "addUser(#username)">
<tr><th concordion:set = "#username">Username</th></tr>
<tr><td>Robert De</td></tr>
<tr><td>John Diere</td></tr>
<tr><td>Julie Re</td></tr>
</table>
<p>Search for "<b concordion:set = "#searchString">J</b>" should return:</p>
<table concordion:verifyRows = "#username : search(#searchString)">
<tr><th concordion:assertEquals = "#username">Matching Usernames</th></tr>
<tr><td>John Diere</td></tr>
<tr><td>Julie Re</td></tr>
</table>
</div>
</body>
</html>
Khi bạn đã hoàn tất việc tạo các tệp nguồn và đặc tả, hãy để chúng tôi chạy ứng dụng dưới dạng Kiểm tra JUnit. Nếu mọi thứ đều ổn với ứng dụng của bạn, thì nó sẽ tạo ra kết quả sau:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 2, Failures: 0
System.html là kết quả của quá trình chạy thử nghiệm Concordion.