2.Feature file

หลังจากติดตั้ง specflow เรียบร้อยแล้วจะได้ References ดังรูป
2016-04-19_165910

ลำดับต่อไป จะเป็นส่วนของการสร้างไฟล์ .feature เพื่อสร้าง scenario และ steps

1. ติดตั้ง IDE INTEGRATION สำหรับ VISUAL STUDIO 2010, 2012, 2013 หรือ 2015

2. สร้างไฟล์ .feature โดย Add > New Item ดังรูป
2016-04-20_102235

แล้วทำการสร้าง SpecFlow Featue File2016-04-20_102320

3. จะได้ไฟล์ .feature และ .feature.cs ดังรูป
2016-04-20_102505
ในการเขียน Test เราจะเขียนที่ไฟล์ .feature
– เราจะเห็นมีคำว่า Feature อยู่บรรทัดบนสุด ซึ่งก็คือ Feature ของโปรแกรมที่เรากำลังจะทดสอบนั่นเอง
– สำหรับคำว่า Scenerio ก็คือ Test Case นั่นเอง
ส่วนไฟล์ .feature.cs นั้น SpecFlow จะสร้างและแก้ไขให้อัตโนมัตินะครับ เราไม่ต้องทำอะไร

4. ทีนี้เราลอง Build แล้วมาดูที่ Test Explorer จะแสดงดังรูปข้างล่าง
2016-04-20_102758
เราจะเห็น Add two numbers in SpecFlowFeature1 ซึ่งอันนี้เข้าใจได้ เพราะอยู่ในไฟล์ .feature
แต่ !!! @SpecRun: Execution delay for evaluation mode คืออะไร ???
คำตอบง่ายๆ คือ เค้าอยากให้เราจ่ายเงินอุดหนุนการพัฒนานั่นเอง จึงใส่ delay มาให้
ยอมรับว่าเค้าทำมาดีจริง ถ้าไม่มีปัญหาการเงิน ก็จ่ายให้เค้าหน่อยละกันนะครับ จะได้ Run แล้วได้ผลเร็วๆ

5. ทดลอง Run กันดู
2016-04-20_102957

จะได้ผล Run เป็น Test Skipped ดังรูป (ก็แน่ล่ะ ยังไม่ได้เขียนให้ตรวจอะไรเลย)
2016-04-20_103144

6. มาเขียนโปรแกรมสำหรับตรวจความถูกต้องกัน โดยการคลิกขวาที่ Scenario แล้วเลือก Generate Step Definitions
2016-04-20_103310

จะแสดงหน้าต่าง ก็กด Generate กันได้เลย
(แต่ถ้า Feature นั้นเคย Generate มาแล้ว ก็กด Copy methods to clipboard แล้วไป paste ที่ไฟล์ .cs ที่เคย generate ไว้ ก็ง่ายดี)
2016-04-20_103342

7. มาตั้งชื่อไฟล์ .cs ที่จะกำหนดว่าในแต่ละ Step ให้ตรวจอะไรบ้างกัน
2016-04-20_103434ถือ

กำเนิดไฟล์ *Steps.cs
2016-04-20_103504

ลองเปิด *Steps.cs ดูสิ
2016-04-20_103731
ลองสังเกตุใน […] จะตรงกับในไฟล์ .feature เลย แต่จะเห็นมีการกำหนด (.*) เพื่อรับค่าใส่ตัวแปล p0
ซึ่งจะตั้งชื่อตัวแปลอะไรก็ได้นะ จะกำหนดตัวแปลกี่ตัวก็ได้เพื่อรับค่า แต่ต้อง match กัน 1-1 และต้องเรียงตามลำดับนะครับ

8. ทีนี้ลอง Run ดูอีกรอบ โดยคลิกขวาที่บรรทัด Scenario แล้วเลือก Run SpecFlow Scenarios ก็ได้
2016-04-20_103811

หรือจะคลิกขวาที่ไฟล์ .feature ก็ได้นะ
2016-04-20_124306

9. ได้ผลเป็น Test Skipped เช่นกัน
2016-04-20_104356

ก็เพราะบรรทัด ScenarioContext.Current.Pending(); ดังรูปข้างล่างนี้นั่นเอง
2016-04-20_104514

10. ทีนี้เรามาลองแทนที่ด้วย Assert แล้วจะเห็นว่ามันไม่รู้จัก
ให้คลิกขวาแล้วเลือก Resolve > using Microsoft.VisualStudio.TestTools.UnitTesting;
2016-04-20_104733

รู้จักกันแล้ว
2016-04-20_104802

11. ทดลองกำหนดให้ Fail โดยใช้คำสั่ง Assert.Fail();
แล้วลองกด Run จะได้ผล Fail ดังรูป
2016-04-20_104928ได้ผล Fail ถูกต้องตามคาดหวัง 🙂

 

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s