การจัดการตัวเลือกในการแลกซื้อเครื่องใหม่

การจัดการตัวเลือกเป็นหัวใจสำคัญของแนวทางแบบโมดูลของ Trade Federation โดยเฉพาะอย่างยิ่ง ตัวเลือกเป็นกลไกที่นักพัฒนาซอฟต์แวร์ ผู้ผสานรวม และ Test Runner สามารถทํางานร่วมกันได้โดยไม่ต้องทํางานซ้ำกัน พูดง่ายๆ คือการใช้การจัดการตัวเลือกของเราทำให้ นักพัฒนาซอฟต์แวร์เพื่อทำเครื่องหมายสมาชิกคลาส Java ว่าสามารถกำหนดค่าได้ ซึ่งทำให้ค่าของสมาชิกดังกล่าว สามารถเสริมหรือลบล้างได้โดยผู้ผสานรวมระบบ และจะสามารถนำไปเสริมหรือลบล้างได้โดย เครื่องมือดำเนินการทดสอบ กลไกนี้ใช้งานได้กับ JavaScript ทุกประเภท รวมถึง ประเภทที่แท้จริง Map หรือ Collection อินสแตนซ์

หมายเหตุ: กลไกการจัดการตัวเลือกใช้ได้กับชั้นเรียนเท่านั้น โดยใช้หนึ่งใน อินเทอร์เฟซที่รวมอยู่ในวงจรการทดสอบ และเฉพาะเมื่อคลาสนั้น ยืนยันโดยเครื่องจักรในวงจร

นักพัฒนาซอฟต์แวร์

ในการเริ่มต้น นักพัฒนาแอปจะทําเครื่องหมายสมาชิกด้วยคำอธิบายประกอบ @Option โดยจะระบุค่า name และ description (อย่างน้อย) ระบุชื่ออาร์กิวเมนต์ที่เชื่อมโยงกับตัวเลือกนั้นและคำอธิบายที่แสดง คอนโซล TF เมื่อเรียกใช้คำสั่งด้วย --help หรือ --help-all

ตัวอย่างเช่น สมมติว่าเราต้องการสร้างการทดสอบโทรศัพท์ที่ใช้งานได้ซึ่งจะโทรหาหมายเลขโทรศัพท์ต่างๆ และคาดว่าจะได้รับชุดเสียง DTMF จากแต่ละหมายเลขหลังจากเชื่อมต่อ

public class PhoneCallFuncTest extends IRemoteTest {
    @Option(name = "timeout", description = "How long to wait for connection, in millis")
    private long mWaitTime = 30 * 1000;  // 30 seconds

    @Option(name = "call", description = "Key: Phone number to attempt. " +
            "Value: DTMF to expect. May be repeated.")
    private Map<String, String> mCalls = new HashMap<String, String>;

    public PhoneCallFuncTest() {
        mCalls.add("123-456-7890", "01134");  // default
    }

นี่คือทั้งหมดที่จำเป็นสำหรับนักพัฒนาซอฟต์แวร์ในการตั้งค่าการกำหนดค่า 2 จุด การทดสอบ จากนั้นผู้ใช้สามารถปิดและใช้งาน mWaitTime และ mCalls ตามปกติได้โดยไม่ต้องสนใจมากนักว่าสามารถกําหนดค่าได้ เนื่องจาก จะมีการตั้งค่าช่อง @Option หลังจากสร้างอินสแตนซ์คลาส แต่อยู่ก่อน เรียกเมธอด run ซึ่งมีวิธีง่ายๆ ให้ผู้ติดตั้งใช้งานตั้งค่าเริ่มต้น หรือดำเนินการกรองบางอย่างในฟิลด์ Map และ Collection ซึ่งเป็น มิฉะนั้นจะใช้ "ต่อท้ายเท่านั้น"

ผู้รวมบริการ

โดย Integrator จะทำงานได้กับโลกแห่งการกำหนดค่า ซึ่งเขียนในรูปแบบ XML รูปแบบการกําหนดค่าช่วยให้ผู้ผสานรวมกําหนด (หรือเพิ่ม) ค่าสําหรับช่อง @Option ได้ ตัวอย่างเช่น สมมติว่าผู้ผสานรวมต้องการกำหนดการทดสอบที่มีเวลาในการตอบสนองต่ำลงซึ่งเรียกหมายเลขเริ่มต้น รวมถึงการทดสอบที่ทำงานต่อเนื่องเป็นเวลานานซึ่งเรียกหมายเลขต่างๆ ผู้ใช้อาจสร้างการกําหนดค่า 2 รายการที่มีลักษณะดังนี้

<?xml version="1.0" encoding="utf-8"?>
<configuration description="low-latency default test; low-latency.xml">
    <test class="com.example.PhoneCallFuncTest">
        <option name="timeout" value="5000" />
    </test>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration description="call a bunch of numbers; many-numbers.xml">
    <test class="com.example.PhoneCallFuncTest">
        <option name="call" key="111-111-1111" value="#*#*TEST1*#*#" />
        <option name="call" key="222-222-2222" value="#*#*TEST2*#*#" />
        <!-- ... -->
    </test>
</configuration>

ตัวดำเนินการทดสอบ

Test Runner ยังเข้าถึงจุดการกำหนดค่าเหล่านี้ผ่านคอนโซล Trade Federation ได้ด้วย สิ่งแรกสุดคือเรียกใช้คําสั่ง (นั่นคือการกําหนดค่าและอาร์กิวเมนต์ทั้งหมด) ด้วยคำสั่ง run command <name> (หรือ run <name> สั้นๆ) นอกจากนี้ ยังระบุรายการอาร์กิวเมนต์ที่เป็นส่วนหนึ่งของคําสั่งได้ ซึ่งสามารถแทนที่หรือต่อท้ายช่องที่ระบุโดยออบเจ็กต์วงจรภายในการกําหนดค่าแต่ละรายการ

หากต้องการทำการทดสอบเวลาในการตอบสนองต่ำด้วยหมายเลขโทรศัพท์ many-numbers ตัวเรียกใช้การทดสอบอาจดำเนินการต่อไปนี้

tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#

หรือเพื่อให้ได้ผลลัพธ์ที่คล้ายกันจากทิศทางตรงกันข้าม ตัวดำเนินการทดสอบอาจลดการรอ เวลาสำหรับการทดสอบ many-numbers:

tf> run many-numbers.xml --timeout 5000

ตัวเลือกในการสั่งซื้อ

คุณอาจสังเกตเห็นว่าการใช้งานที่สำคัญของตัวเลือก call คือ Map ดังนั้นเมื่อป้อน --call ซ้ำในบรรทัดคำสั่ง ค่าดังกล่าวจึงได้รับการจัดเก็บไว้ทั้งหมด

ตัวเลือก timeout ซึ่งมีการติดตั้งใช้งานที่สำคัญของ long สามารถจัดเก็บได้เพียงค่าเดียวเท่านั้น ดังนั้นระบบจะจัดเก็บเฉพาะค่าสุดท้ายที่ระบุเท่านั้น --timeout 5 --timeout 10 ให้ผลลัพธ์ใน timeout ที่มี 10

ในกรณีที่มีการใช้ List หรือ Collection เป็นการใช้งานพื้นฐาน ระบบจะจัดเก็บค่าทั้งหมดตามลำดับที่ระบุไว้ในบรรทัดคำสั่ง

ตัวเลือกบูลีน

คุณสามารถตั้งค่าตัวเลือกของประเภทพื้นฐานแบบบูลีนเป็น true ได้โดยการส่งพารามิเตอร์ ชื่อตัวเลือก เช่น --[option-name] และสามารถตั้งค่าเป็น false ได้โดยใช้ ไวยากรณ์ --no-[option-name]

ดูเพิ่มเติม

ส่งตัวเลือกไปยังชุดโปรแกรมและ โมดูล