การทำ EasyTest ด้วย JUnit

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: การทำ EasyTest ด้วย JUnit

การทำ EasyTest ด้วย JUnit

โดย M033 » 28/01/2016 11:13 am

ในการเขียน 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
    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 ดังรูป
Screen Shot 22.png
เพียงเท่านี้ เราสามารถทำ Data-Driven testing และการวน loop โดยไม่ต้องเขียน loop ด้วย module EasyTest ได้แล้วครับ

แหล่งที่มา: http://www.narisa.com/forums/index.php? ... entry=2990

ข้างบน