次の方法で共有


スクリプト言語でテストを作成する

C++ と C# に加えて、TAEF ではスクリプト言語でのテストの作成がサポートされています。

スクリプト コンポーネントは、Microsoft COM スクリプト インターフェイスをサポートする任意のスクリプト言語を使用して作成します。 これらのインターフェイスをサポートするスクリプト言語には、JScript、Microsoft Visual Basic Scripting Edition (VBScript)、PERLScript、PScript、Ruby、Python があります。

スクリプト テスト作成の現在の制限事項

既定では、Windows では JScript と VBScript のみがサポートされています。

スクリプト テスト ファイルの形式

スクリプト言語テストの場合、TAEF は少し変更されたWindows スクリプト コンポーネントファイル形式を使用します。 次の例は、VBScript と JScript のテスト クラスを含むテスト ファイルを示しています。

1   <?xml version="1.0" ?>
2
3   <!-- Debugging helpers -->
4   <!-- error    Set this to true to display detailed error messages for syntax or run-time errors in the script component.-->
5   <!-- debug    Set this to true to enable debugging. If this debugging is not enabled, you cannot launch the script debugger for a script -->
6   <?component error="true" debug="true"?>
7
8   <package>
9       <!-- Test module metadata -->
10      <ModuleProperty name="Owner" value="Someone"/>
11
12      <!-- Define a test class -->
13      <component id="VBSampleTests">
14          <!-- define and instantiate a logger -->
15          <object id="Log" progid="WEX.Logger.Log" />
16  
17          <!-- include a reference to the logger so you could use the constants defined in logger library -->
18          <reference guid="e65ef678-a232-42a7-8a36-63108d719f31" version="1.0"/>
19
20          <!-- Test class metadata -->
21          <TestClassProperty name="DocumentationUrl" value="http://shelltestkb/"/>
22
23          <public>
24              <!-- Define a test method with metadata -->
25              <method name="TestOne">
26                  <!-- Test method metadata -->
27                  <TestMethodProperty name="Priority" value="1"/>
28              </method>
29  
30              <!-- Define a test method without metadata -->
31              <method name="TestTwo"/>
32         </public>
33
34          <script language="VBScript">
35              <![CDATA[
36                  Function TestOne()
37                      Log.Comment("Calling TestOne")
38                  End Function
39
40                  Function TestTwo()
41                      Log.Comment("Calling TestTwo")
42                  End Function
43              ]] >
44          </script>
45      </component>
46
47      <!-- Define another test class -->
48      <component id="JScriptSampleTests">
49          <object id="Log" progid="WEX.Logger.Log" />
50
51          <!-- need reference to use logger constants -->
52          <reference guid="e65ef678-a232-42a7-8a36-63108d719f31" version="1.0"/>
53
54          <public>
55              <!-- Test setup and cleanup methods are declared using corresponding type = '' attributes -->
56              <method name="ClassSetup" type="TestClassSetup"/>
57              <method name="ClassCleanup" type="TestClassCleanup"/>
58              <method name="MethodSetup"  type="TestMethodSetup"/>
59              <method name="MethodCleanup" type="TestMethodCleanup"/>
60
61              <method name="TestOne"/>
62              <method name="TestTwo"/>
63          </public>
64
65          <!-- Setup and Cleanup methods return false on failure -->
66          <script language="JScript">
67              <![CDATA[
68                  function ClassSetup()
69                  {
70                      Log.Comment("Calling class setup");
71                      return true;
72                  }
73
74                  function ClassCleanup()
75                  {
76                      Log.Comment("Calling class cleanup");
77                      return true;
78                  }
79
80                  function MethodSetup()
81                  {
82                      Log.Comment("Calling method setup");
83                      return true;
84                  }
85
86                  function MethodCleanup()
87                  {
88                      Log.Comment("Calling method cleanup");
89                      return true;
90                  }
91
92                  function TestOne()
93                  {
94                      Log.Comment("Calling TestOne");
95  
96                      // For the purpose of demonstration, declare the test failed
97                      Log.Result(TestResult_Failed);
98                  }
99
100                 function TestTwo()
101                 {
102                     Log.Comment("Calling TestTwo");
103                 }
104             ]] >
105         </script>
106     </component>
107 </package>

この例は XML ファイルであり、通常の XML ヘッダーで始まります。

<?xml version="1.0" ?>

属性エラーデバッグを設定して、ファイルのデバッグ設定を構成します。

<?component error="true" debug="true"?>
  • スクリプト コンポーネントの構文または実行時エラーの詳細なエラー メッセージを表示するには、errortrue に設定します。
  • デバッグを有効にするには、debugtrue に設定します。 デバッグが有効になっていない場合は、スクリプトのスクリプト デバッガーを起動できません (JScript コード内のデバッグ キーワードなど)。

<パッケージ>要素は、テスト クラス定義を .wsc ファイルで囲みます。 この要素の後に ModuleProperty 要素を追加することで、モジュール レベルのメタデータを挿入できます。

<ModuleProperty name = "Owner" value = "Someone"/>

ModuleProperty 要素には、名前の属性を含める必要があります。

Component 要素は、スクリプト テスト クラスの宣言を開始します。 この要素には、クラス名に 設定された id 属性が常に含まれている必要があります。

Component 要素の後に、TestClassProperty 要素を使用してクラス レベルのメタデータを挿入できます。 ModuleProperty 要素と同様に、名前の属性が必要です。

この時点で、オブジェクトを作成し、オブジェクトへの参照を定義することもできます。 詳細については、その他のコンポーネントセクションを参照してください。 XML の例の 15 行目、18 行目、49 行目、52 行目は、WEX.Logger.Log オブジェクトを参照して初期化する方法を示しています。

<パブリック>要素は、テスト スクリプト モジュールのテスト メソッド宣言を囲みます。 テスト メソッドを宣言するには、<メソッド>要素の名前属性にテスト メソッド名を指定します。 <メソッド>要素内にテスト メソッド プロパティを追加することもできます。 他のレベルのプロパティと同様に、必須ではありません。 ただし、追加する場合は、名前の属性を含める必要があります。

<スクリプト>要素は、テスト スクリプト言語を識別し、テスト メソッドの実装を囲みます。

< ! [CDATA[]]> セクションには、テストの実際の実装 (スクリプト言語で記述されたコード) が含まれています。 このセクションでは、<パブリック></パブリック> セクションで宣言したテスト メソッドを実装します。