ในการเขียน test ด้วย #junit นั้นมี feature ต่างๆ ที่น่าสนใจหลายๆ ตัว หนึ่งในนั้น คือ การใช้ @Repeat และ @Duration สำหรับการวน loop เพื่อทำการเรียกแต่ละ test case ซ้ำๆ ซึ่งถูกใช้งานรวามกับการทำ Data-Driven testing เสมอ โดยสามารถนำไปประยุกต์ใช้สำหรับทำ Load testing ได้อีกด้วย
และ #EasyTest นั้นยังมีความสามารถอื่นๆ อีก เช่น
- -อ่านข้อมูลจากไฟล์ Microsoft Excel, JSON, XML
-การใช้งานผ่าน Dependency Injection
-การแสดงรายงานการทดสอบ
-ทดสอบแบบคู่ขนาน
-สามารถใช้ร่วมงานกับ Spring framework
มาดูตัวอย่างการใช้งาน EasyTest
การใช้งาน module ที่ชื่อว่า EasyTest นั้นเราสามารถกำหนดค่าต่างๆ ดังนี้ได้
- -ชื่อไฟล์ข้อมูลที่นำมาทดสอบ ( DataLoader )
-จำนวนรอบการวนซ้ำ ( Repeat )
-เวลาการทำงานสูงสุดในแต่ละ test case ( Duration ) ถ้าทำงานเกินเวลาที่กำหนด test case จะ fail
ขั้นแรกทำการเพิ่ม dependency ของ EasyTest เข้าไปใน pom.xml ของ maven project
โค้ด: เลือกทั้งหมด
<dependency>
<groupId>org.easetech</groupId>
<artifactId>easytest-core</artifactId>
<version>1.2.5</version>
</dependency>
ทำการสร้าง test case โดยต้องการให้วนทำงาน 5 รอบ ด้วยการใช้ @Repeat และใช้ข้อมูลจากไฟล์ data.csv ดังนี้
โค้ด: เลือกทั้งหมด
@RunWith(DataDrivenTestRunner.class)
public class WithoutLoopTest {
@Test
@DataLoader(filePaths = { "data.csv" })
@Repeat(times=5)
public void testUseRepeat10Times(@Param(name="ID") int id, @Param(name="Name") String name) throws Exception {
System.out.println("Test=" + id);
}
}
คำอธิบาย
- -ใน test case ชื่อว่า testUseRepeat10Times นั้นจะเรียกใช้ข้อมูลมาทดสอบจากไฟล์ test.csv ซึ่งข้อมูลประกอบไปด้วย ID และ Name
-ทำการวนทดสอบจำนวน 5 รอบ
ข้อมูลในไฟล์ data.csv
โค้ด: เลือกทั้งหมด
testUseRepeat10Times,ID,Name
,1,Name 1
,2,Name 2
โดยโครงสร้างของไฟล์ data.csv ประกอบไปด้วย
- -แถวที่ 1 ประกอบไปด้วย ชื่อของ method ที่ใช้งาน, ชื่อ column ที่ 1 และชื่อ column ที่ 2
-ตั้งแต่แถวที่ 2 ขึ้นไปนั้นคือข้อมูลที่จะถูกใช้งาน
เมื่อทำการ run test พบว่ามีการทำงาน 10 ครั้ง มาจาก จำนวนข้อมูล X จำนวนรอบที่กำหนดไว้ใน @Repeat คือ 2X5 = 10 ดังรูป
- Screen Shot 2556-10-20 at 10.50.40 PM.png (150.83 KiB) Viewed 849 times
ต่อมาทดสอบใช้ @Duration มาเพื่อกำหนดให้เวลาการทำงานสูงสุด 10 milisecond ดังนี้
โค้ด: เลือกทั้งหมด
@Duration(timeInMillis=1)
public void testUseRepeat10Time ....
...
ถ้า test case นั้นทำงานเกินเวลาที่กำหนด จะเกิด error หรือ failure ดังรูป
เพียงเท่านี้ เราสามารถทำ Data-Driven testing และการวน loop โดยไม่ต้องเขียน loop ด้วย module EasyTest ได้แล้วครับ
แหล่งที่มา:
http://www.narisa.com/forums/index.php? ... entry=2990
ในการเขียน test ด้วย #junit นั้นมี feature ต่างๆ ที่น่าสนใจหลายๆ ตัว หนึ่งในนั้น คือ การใช้ @Repeat และ @Duration สำหรับการวน loop เพื่อทำการเรียกแต่ละ test case ซ้ำๆ ซึ่งถูกใช้งานรวามกับการทำ Data-Driven testing เสมอ โดยสามารถนำไปประยุกต์ใช้สำหรับทำ Load testing ได้อีกด้วย
และ #EasyTest นั้นยังมีความสามารถอื่นๆ อีก เช่น
[list] -อ่านข้อมูลจากไฟล์ Microsoft Excel, JSON, XML
-การใช้งานผ่าน Dependency Injection
-การแสดงรายงานการทดสอบ
-ทดสอบแบบคู่ขนาน
-สามารถใช้ร่วมงานกับ Spring framework[/list]
[b]มาดูตัวอย่างการใช้งาน EasyTest [/b]
การใช้งาน module ที่ชื่อว่า EasyTest นั้นเราสามารถกำหนดค่าต่างๆ ดังนี้ได้
[list]-ชื่อไฟล์ข้อมูลที่นำมาทดสอบ ( DataLoader )
-จำนวนรอบการวนซ้ำ ( Repeat )
-เวลาการทำงานสูงสุดในแต่ละ test case ( Duration ) ถ้าทำงานเกินเวลาที่กำหนด test case จะ fail
[/list]
ขั้นแรกทำการเพิ่ม dependency ของ EasyTest เข้าไปใน pom.xml ของ maven project
[code]<dependency>
<groupId>org.easetech</groupId>
<artifactId>easytest-core</artifactId>
<version>1.2.5</version>
</dependency>[/code]
ทำการสร้าง test case โดยต้องการให้วนทำงาน 5 รอบ ด้วยการใช้ @Repeat และใช้ข้อมูลจากไฟล์ data.csv ดังนี้
[code]
@RunWith(DataDrivenTestRunner.class)
public class WithoutLoopTest {
@Test
@DataLoader(filePaths = { "data.csv" })
@Repeat(times=5)
public void testUseRepeat10Times(@Param(name="ID") int id, @Param(name="Name") String name) throws Exception {
System.out.println("Test=" + id);
}
}
[/code]
[b]คำอธิบาย[/b]
[list] -ใน test case ชื่อว่า testUseRepeat10Times นั้นจะเรียกใช้ข้อมูลมาทดสอบจากไฟล์ test.csv ซึ่งข้อมูลประกอบไปด้วย ID และ Name
-ทำการวนทดสอบจำนวน 5 รอบ[/list]
ข้อมูลในไฟล์ data.csv
[code]testUseRepeat10Times,ID,Name
,1,Name 1
,2,Name 2[/code]
[b]โดยโครงสร้างของไฟล์ data.csv ประกอบไปด้วย[/b]
[list] -แถวที่ 1 ประกอบไปด้วย ชื่อของ method ที่ใช้งาน, ชื่อ column ที่ 1 และชื่อ column ที่ 2
-ตั้งแต่แถวที่ 2 ขึ้นไปนั้นคือข้อมูลที่จะถูกใช้งาน
[/list]
เมื่อทำการ run test พบว่ามีการทำงาน 10 ครั้ง มาจาก จำนวนข้อมูล X จำนวนรอบที่กำหนดไว้ใน @Repeat คือ 2X5 = 10 ดังรูป
[list][attachment=1]Screen Shot 2556-10-20 at 10.50.40 PM.png[/attachment][/list]
ต่อมาทดสอบใช้ @Duration มาเพื่อกำหนดให้เวลาการทำงานสูงสุด 10 milisecond ดังนี้
[code]@Duration(timeInMillis=1)
public void testUseRepeat10Time ....
...[/code]
ถ้า test case นั้นทำงานเกินเวลาที่กำหนด จะเกิด error หรือ failure ดังรูป
[attachment=0]Screen Shot 22.png[/attachment]
เพียงเท่านี้ เราสามารถทำ Data-Driven testing และการวน loop โดยไม่ต้องเขียน loop ด้วย module EasyTest ได้แล้วครับ
แหล่งที่มา: http://www.narisa.com/forums/index.php?app=blog&blogid=9&showentry=2990