Pilihan

Test Authoring and Execution Framework (TAEF) menyediakan mekanisme untuk menjalankan atau menghilangkan pengujian tertentu secara selektif berdasarkan informasi metadata yang Anda berikan. Bagian berikut membahas berbagai contoh cara menggunakan mekanisme pemilihan ini dengan TE.exe.

Anda dapat menjalankan TE.exe dari jendela prompt perintah.

TE <test_binaries> [/select:<selection criteria>]

Bagian ini menjelaskan opsi TE.exe /select:kriteria seleksi. Untuk informasi selengkapnya tentang TE.exe, lihat Opsi PerintahTE.exe.

Kriteria pemilihan diberlakukan secara global ke semua biner pengujian yang dinyatakan di baris perintah. Mari kita pertimbangkan dua test_binaries: Contoh\CPP.SelectionCriteria1.Example.dll dan Contoh\CPP.SelectionCriteria2.Example.dll . Contoh berikut menunjukkan properti, atau metadata, yang ditentukan pada berbagai tingkatan dalam test_binaries ini. Anda juga dapat memperoleh ini dengan menentukan opsi /listproperties di jendela Prompt Perintah.

CPP.SelectionCriteria1.Example.dll (Owner="C1", Priority=3)
class11 (Owner="C2")
method111(Priority=1)

method112 (BackwardsCompatibility="Windows 2000")
class12
method121
CPP.SelectionCriteria2.Example.dll (Owner="WEX")
class21 (Owner="C1", Priority=2, BackwardsCompatibility="Windows XP")
method211 (Owner="C2")
class22 (Owner="U3")
method221

Dengan kata lain, dengan menggunakan /listproperties pada masing-masing test_binaries ini secara terpisah, Anda mendapatkan:

F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution>te Examples\CPP.SelectionCriteria1.Example.dll /listproperties
Test Authoring and Execution Framework v2.2 Build 6.1.7689.0 (release.091218-1251) for x86

F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution\Examples\CPP.SelectionCriteria1.Example.dll
        Property[Owner] = C1
        Property[Priority] = 3
    WEX::TestExecution::Examples::Class11
            Property[Owner] = C2
        WEX::TestExecution::Examples::Class11::Method111
                Property[Priority] = 1
        WEX::TestExecution::Examples::Class11::Method112
                Property[BackwardsCompatibility] = Windows2000

    WEX::TestExecution::Examples::Class12
        WEX::TestExecution::Examples::Class12::Method121

Dan:

F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution>te Examples\CPP.SelectionCriteria2.Example.dll /listproperties
Test Authoring and Execution Framework v2.2 Build 6.1.7689.0 (release.091218-1251) for x86

F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution\Examples\CPP.SelectionCriteria2.Example.dll
        Property[Owner] = WEX
    WEX::TestExecution::Examples::Class21
            Property[BackwardsCompatibility] = Windows XP
            Property[Owner] = C1
            Property[Priority] = 2
        WEX::TestExecution::Examples::Class21::Method211
                Property[Owner] = C2

    WEX::TestExecution::Examples::Class22
            Property[Owner] = U3
        WEX::TestExecution::Examples::Class22::Method221

Penting untuk dicatat pada titik ini bahwa test_binaries tercantum bersama dengan jalur lengkapnya, dan nama kelas tercantum sebagai "<Namespace>::<ClassName>" dalam kasus test_binaries asli dan "<Namespace.><ClassName>" dalam kasus test_binaries terkelola. Demikian pula, nama metode pengujian terdaftar sebagai "<Namespace>::<ClassName>::<TestMethodName>" dalam kasus test_binaries asli dan "<Namespace>.<ClassName>.<TestMethodName>" dalam kasus test_binaries terkelola.

Dengan kata lain, nama yang sepenuhnya memenuhi syarat dari nama atau fungsi apa pun adalah apa yang disimpan di te. Ini untuk memungkinkan kemampuan untuk membedakan metode apa pun secara unik. Misalnya jika dua kelas memiliki nama metode yang sama, kualifikasi kelas membantu memilih metode yang Anda minati secara unik. Untuk keperluan ini, kriteria pemilihan membantu menjalankan hanya pengujian yang sesuai dengan kriteria Anda dalam test_binaries yang diberikan.

Dalam contoh di atas, katakanlah dalam Contoh\Cpp.SelectionCriteria1.Example.dll, Anda dapat memilih "Method111" dengan salah satu kriteria pilihan berikut:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='WEX::TestExecution::Examples::Class11::Method111'"
Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='*Class11::Method111'"
Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='*Method111'"

Anda dapat memilih untuk menjalankan semua pengujian yang telah ditandai dengan "Prioritas" di bawah 2 dengan menggunakan perintah:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority < 2"

Ini hanya akan menjalankan Contoh\CPP.SelectionCriteria1.Example.dll - "class11::method111" dalam contoh kami.

Jika Anda ingin menjalankan semua pengujian dalam class11, Anda dapat menggunakan properti "Nama" yang sudah dikualifikasikan bersama dengan pencocokan wildcard untuk memilihnya sebagai berikut:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll
                                                               /select:"@Name='*::class11::*'"

Saat menggunakan kriteria pemilihan, ada beberapa hal yang berguna untuk diingat:

  • "dan", "tidak", dan "atau" adalah kata cadangan dan tidak sensitif terhadap huruf besar/kecil."
  • nama dan nilai properti metadata tidak membedakan huruf besar dan kecil, misalnya "C2" dalam contoh, akan cocok dengan "c2" dan "C2". Oleh karena itu, jika Anda memiliki satu fungsi dengan metadata "properti" dan satu lagi dengan "Properti" dan kriteria pemilihan mencari "PROPERTY", maka keduanya akan cocok.
  • Nilai string dalam string kueri pilihan harus disertakan dalam tanda kutip tunggal. Dalam nilai string pada kueri pemilihan, "?" adalah karakter pengecoh tunggal dan "*" adalah 0 atau lebih karakter bebas.
  • Saat menggunakan tanda kutip di prompt perintah Anda, perhatikan tanda kutip cerdas saat Anda menyalin kueri pilihan. Jika Anda menyalin kueri pilihan dari email Outlook, Anda mungkin tidak sengaja memiliki tanda kutip pintar, dan TAEF mungkin tidak dapat mengurainya. Ketik tanda kutip sebagai gantinya.

Mari kita membahas beberapa contoh singkat kriteria pemilihan kombinasi dan apa yang akan dieksekusi.

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=2"

Akan berjalan:

  • Contoh\CPP.SelectionCriteria2.Example.dll - class21::method211
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=3"

Akan berjalan:

  • Contoh\CPP.SelectionCriteria1.Example.dll - class11::method112
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='U3' oR @Priority=1"

Akan berjalan:

  • Contoh\CPP.SelectionCriteria1.Example.dll - class11::method111
  • Contoh\CPP.SelectionCriteria2.Example.dll - class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*)"

Akan menjalankan semua pengujian di mana nilai BackwardsCompatibility belum ditentukan. (Lihat item berikut.)

  • Contoh\CPP.SelectionCriteria1.Example.dll - class11::method111, class12::method121
  • Contoh\CPP.SelectionCriteria2.Example.dll - class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C*'"

akan menjalankan semua pengujian di mana nilai Pemilik dimulai dengan "C" (tidak peka huruf besar/kecil). Dengan demikian, perintah sebelumnya akan menjalankan semua pengujian dalam Contoh\CPP.SelectionCriteria1.Example.dll and all tests in Examples\CPP.SelectionCriteria2.Example.dll di bawah class21 (yaitu, method211)

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*) OR (@Owner='C*' AND @BackwardsCompatibility='*XP*')"

akan menjalankan semua pengujian di mana BackwardsCompatibility tidak ditentukan atau di mana nama pemilik dimulai dengan "C" dan nilai BackwardsCompatibility berisi XP. PERHATIKAN bagaimana tanda kurung "(" dan ")" digunakan untuk menentukan urutan prioritas.

Dalam contoh, ini akan berjalan secara selektif:

  • Contoh\CPP.SelectionCriteria1.Example.dll - class11::method111, class12::method121,
  • Contoh\CPP.SelectionCriteria2.Example.dll - class21::method211, class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Owner='???'"

hanya akan menjalankan pengujian yang memiliki nilai pemilik properti yang hanya berisi 3 karakter.

Dalam contoh kami, ini akan cocok dengan "C" dan kemudian hanya menjalankan:

  • Contoh\CPP.SelectionCriteria1.Example.dll - class12::method121
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority>=1"

Nota

Ini adalah contoh yang baik tentang bagaimana Anda dapat menggunakan ">=", "<=", ">" dan "<" di mana propertyvalues adalah floatvalues.

Dalam contoh kami, ini akan menjalankan semua metode kecuali Contoh\CPP.SelectionCriteria2.Example.dll - class22::method221, di mana tidak ada proritas yang ditentukan. Dengan kata lain, ini akan berjalan:

  • Contoh\CPP.SelectionCriteria1.Example.dll - class11::method111, class11::method112, class12::method121
  • Contoh\CPP.SelectionCriteria2.Example.dll - class21::method211.

PERHATIKAN bahwa Anda dapat menggunakan "/select" bersama dengan opsi perintah lain seperti "/list" "/listproperties" dll.

Kutipan Cerdas

Anda mungkin menemukan tanda kutip pintar dalam kriteria pilihan Anda jika Anda menyalin kriteria pilihan dari dokumen Outlook atau Word kembali ke prompt perintah Anda. Anda dapat menemukan informasi selengkapnya tentang apa itu "smart quotes" di "Smart quotes": Momok tersembunyi pada teks yang ditujukan untuk konsumsi komputer

Tidak ada cara mudah untuk menghindari tanda kutip cerdas - pendekatan terbaik adalah menghapus semua tanda kutip ganda " dan tanda kutip tunggal ' dalam kriteria pemilihan setelah Anda menyalinnya ke jendela perintah dan mengetik ulang bagian tanda kutip pada kueri tersebut.

Ada pengaturan opsi untuk menonaktifkannya saat membuat pesan di Outlook. Ketik "tanda kutip pintar" ke dalam kotak bantuan Outlook untuk menemukan ini.

Pemilihan Berdasarkan Nama Cepat

TAEF memungkinkan pemilihan cepat berdasarkan nama pada prompt perintah menggunakan parameter baris perintah '/name':

/name:<test name with wildcards>

setara dengan:

/select:@Name='<test name with wildcards>'

Dengan kata lain, Anda sekarang bisa memberikan kueri pilihan berdasarkan nama seperti:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Name='*::class11::*'"

lebih cepat dengan menggunakan /name seperti:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /name=*::class11::*

Perhatikan bahwa jika /name dan /select disediakan pada prompt perintah, maka /name diabaikan dan /select lebih diutamakan.