0

負荷テストの一部のテストには、必要なデータを取得するために 2 つのステップが含まれますが、そのプロセスの各コンポーネントにかかる時間を個別にテストして、負荷テスト データベースに簡単に保存し、別のプロセスを許可できるようにしたいと考えています。それに関するレポートを作成する人。たとえば、次の 2 つのメソッドの時間をテストする必要があります。

public FooObject[] GetFooList()  
public FooObject GetFoo( FooId )  

これらを使用する方法は次のようになります。

 FooObject[] results = GetFooList();  
 FooObject finalResult = GetFoo( results[0].FooId );

GetFooList() と GetFoo() が完了するまでにかかる時間を知りたいので、TestInitialize メソッドで GetFoo() に必要な準備作業を行うことで、記録されたテスト時間には影響しないと考えました。thread.sleep() でいくつかテストした後、そうではないことに気付きました。これが現在の私のクラスです。

[TestClass]  
public class MyTestClass
{  

  public static object f;  
  public static Random r = new Random();  

  public TestContext TestContext { get; set; }  

  [TestInitialize]  
  public void testInit() {  
    if( TestContext.TestName == "GetFooTest" ) {  
        FooObject[] results = GetFooList();  
        f = results[ r.nextInt( results.Length ) ];  
    }  
  }  

  [TestMethod]  
  public void GetFooTest()  
  {   
    GetFoo( ((FooObject)f).FooId );  
  }  

  [TestMethod]
  public void GetFooListTest()
  {
     GetFooList();
  }  
}  


1.負荷テストがテストの TestInitalize コンポーネントを無視する方法があったか、2
.そうでない場合は、この問題を回避する方法について提案があったかどうか。

これらのメソッドの約 10 の異なるペア (GetBarList、GetBar など) があるため、fを汎用オブジェクトに格納し、最終的にテストの初期化に大きな switch ステートメントを持たせます。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

2

IFAIK、TestInitialize を含まないタイミング。また、タイマーで使用できます:

this.TestContext.BeginTimer("transaction name");  
//the code you want to measure   
this.TestContext.EndTimer("transaction name");
于 2013-02-02T17:29:34.357 に答える