共用方式為


充分利用 TAEF

測試撰寫和執行架構提供功能強大的平臺,讓您撰寫和執行測試。 在幕後瞭解 TAEF 運作詳細資料的一些可能很有説明,以便充分利用它。 此頁面討論一些秘訣和功能,可協助您撰寫測試,以優化並充分利用 TAEF 所提供的功能。 請確定您已熟悉使用 TAEF 撰寫和執行測試的基本概念。

設定 (或初始化) 和清除方法

元件層級的安裝和清除方法 (也稱為 裝置) ,每個 DLL 執行一次。 同樣地,每個類別的類別層級設定和清除方法會執行一次。 測試層級設定和清除方法對於類別內的所有測試都相同,並在類別中的每個測試之前和之後叫用一次。

每個元件可能只有一個元件層級設定和清除方法、每個類別的一個類別層級設定和清除方法,以及每個類別的一個測試設定和清除方法。 請注意,類別設定和清除方法在 Managed 程式碼中是靜態的,但在 C++ 程式碼中不是靜態的。

如果啟用例外狀況 (預設案例) ,則會在第一次驗證呼叫失敗時終止執行任何方法。 如果您已明確停用以例外狀況為基礎的驗證呼叫, (請參閱撰寫測試中的驗證一節,以取得詳細資料) ,您必須有明確的條件陳述式,才能在驗證呼叫失敗之後控管控制流程。

在安裝程式方法中發生失敗的情況, (例外狀況型驗證失敗,或透過安裝程式明確傳回失敗) ,則後續的測試會被視為「已封鎖」並記錄如下。 例如,如果您的類別層級安裝程式方法失敗,則類別中的所有測試方法都會被視為「已封鎖」,且每個方法都會記錄如下。 此外,如果安裝程式方法發生失敗,將不會叫用 Cleanup 方法。

測試方法

不需要明確記錄測試結果。 如果測試中的所有驗證呼叫都成功,測試將會記錄為「通過」。 在第一次驗證失敗的呼叫上,除非您已明確停用例外狀況型 Verify 呼叫,否則測試方法執行將會終止 (,在此情況下,條件陳述式會在該處判斷控制流程,但不論下列保留) ,測試都會標示為「失敗」。

同樣地,如果您有 VERIFY (取決於傳回類型,以及決定協助程式方法調用呼叫) 包裝函式的成功,則不需要明確檢查並記錄其結果。

指定中繼資料

中繼資料查閱是階層式的。 這表示如果您的 select 語句是 /select:「@Priority=2」,而且如果您的 TestMethod 未指定 Priority,TAEF 會查閱包含它的類別。 如果類別層級中繼資料未指定,TAEF 會查閱元件層級。

因此,如果您想要讓類別中的所有或大部分測試具有相同的「優先順序」,或說「擁有者」,只要在類別層級指定即可取得。 對於此規則例外的一或幾個測試,您可以在 「TestMethod」 層級明確提供中繼資料。 如需詳細資訊,請參閱下列測試:

1    namespace WEX { namespace UnitTests { namespace Samples
2    {
3        //
4        // Declare module level properties
5        //
6        BEGIN_MODULE() //This metadata applies to all the classes and tests in this module or assembly
7            MODULE_PROPERTY(L"GroupOwner", L"SomeGroup")
8        END_MODULE()
9        class PremiumBankAccountTests
10       {
11           //
12           // Declare this class to be a test class with an'advanced' declaration
13           // Use advanced declaration when you want to set metadata on the class
14           //
15           BEGIN_TEST_CLASS(PremiumBankAccountTests) //This metadata applies to all the test in this class
16               TEST_CLASS_PROPERTY(L"Priority", L"2")
17               TEST_CLASS_PROPERTY(L"DevOwner", L"Someone")
18               TEST_CLASS_PROPERTY(L"PMOwner", L"Someone")
19           END_TEST_CLASS()
20           //
21           // Declare class setup - a method that runs after class constructor
22           // and before any test class methods and test setup method
23           //
24           TEST_CLASS_SETUP(SetDefaultAccountType);
25           //
26           // Declare class cleanup - a methods that runs after all the class test methods and test setup method
27           // and before the class destructor
28           //
29           TEST_CLASS_CLEANUP(ResetDefaultAccountType);
30           //
31           // Declare test setup and cleanup - methods that run before and after the execution
32           // of every test method correspondingly
33           //
34           TEST_METHOD_SETUP(CreateBankAccount);
35           TEST_METHOD_CLEANUP(DestroyBankAccount);
36           //
37           // Declare test methods with an 'advanced' declaration
38           // Use advanced declaration when you want to set metadata on the methods
39           //
40           BEGIN_TEST_METHOD(DebitTest)
41               TEST_METHOD_PROPERTY(L"BVT", L"TRUE")
42               TEST_METHOD_PROPERTY(L"PERF", L"TRUE")
43               TEST_METHOD_PROPERTY(L"STRESS", L"FALSE")
44               TEST_METHOD_PROPERTY(L"Priority", L"1") //Overrides the Class level Priority value
45           END_TEST_METHOD()
46           BEGIN_TEST_METHOD(CreditTest)
47               TEST_METHOD_PROPERTY(L"BVT", L"TRUE")
48               TEST_METHOD_PROPERTY(L"PERF", L"FALSE")
49               TEST_METHOD_PROPERTY(L"STRESS", L"TRUE")
50               TEST_METHOD_PROPERTY(L"GroupOwner", L"SomeGroupTest") //Overrides the GroupOwner specified at the Module level
51           END_TEST_METHOD()
52   
53           std::unique_ptr<BankAccount> m_spBankAccount;
54           BankAccountType m_defaultType;
55       };
56   } /* namespace Samples */ } /* namespace UnitTests */ } /* namespace WEX */

注意:針對受控測試,撰寫作業會類似。 模組層級與 Managed 中的元件層級標記相同。 針對 Managed 程式碼中的元件層級或類別層級中繼資料規格,必須在靜態初始化運算式方法之前提供標記。 這可能表示,如果您的測試還沒有初始化運算式,您可能必須提供空的初始化運算式。 此設計特別設計,以確保 VSTS 相容性。

如果是資料表型資料驅動測試,您可以藉由在資料列層級指定它,進一步進行此步驟並覆寫測試層級中繼資料。 如需詳細資訊,請參閱 中繼資料覆寫資料驅動測試範例