2009-05-26 10 views
0

Active Directoryを使用してプロジェクトを集中的に処理しています。私はいくつかの単体テストをADに対して設定しました。そのうちのいくつかは模擬オブジェクトを使って実現しました。私はADに対して実際の呼び出しで達成しました。NextPasswordChangeDate関数をActive Directoryに対してユニットテストする方法

私のプロジェクトの機能の1つとして、いわゆる「ユーザープロファイル」を取得する必要があります。このユーザープロファイルは、ほとんどが "cn"、 "company"、 "employeeid"などの単純な属性で構成されていますが、私が入力しようとしているプロパティは単純な "NextPasswordChangeDate"ではありません。

これを得るための唯一の方法は、ドメインポリシーのmaxPwdAgeを取得し、この情報をpwdLastSetとともに使用することです。

私の質問:これをインテリジェントな方法で単体テストできますか?

  1. それはユニットテストでは、他の手段とハードコードで日付を見つける、検索アカウントとして自分のアカウントを使用してください:私は素晴らしいではありませんすべてが3つのオプション、思い付きました。このようにして私のコードを単体テストすることはできますが、パスワードを変更したので毎月ユニットテストを変更する必要があります。
  2. パスワードの有効期限が設定されていないアカウントを使用します。これは私のコードの正しさを実際にはテストすることができないので、無意味です。
  3. モックオブジェクトを使用して、正しいAPI呼び出しが行われていることを確認してください。このオプションでは、関数の動作の正確性をテストすることができますが、テストされたロジックは実際に単体テストにあるため、テストをパスしても正しいことをしていることは確かではありません。

あなたはどれをお勧めしますか?それとももっと良い選択肢がありますか?

答えて

0

1と2は既存のADに依存しており、既知の値を持っているため、私にとっては統合テストのように思えます。

私は、一般的には、非決定論的な振る舞いを可能な限りインターフェイス化して模擬すべきであると主張します(#3)。ご存知のように、これは単体テスト不可能な量の実際の実装コードを常に残しますが、既知のADシステムに対して実行される統合テストの対象となります。

Related Question/Answer

関連する問題