负载测试,如何在不影响Avg的情况下在TestInitialize中完成工作。测试时间

时间:2013-02-01 17:33:16

标签: c# unit-testing load-testing

我的loadtest中的一些测试包含两个步骤,以获取我需要的数据,但是我想单独测试该进程的每个组件所花费的时间,以便我可以轻松地将其保存到我的负载测试数据库中,并允许其他人创建报告。例如,我需要测试这两种方法的时间:

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 存储在一个通用对象中,并最终让测试初始化​​有一个重要的转变声明。任何帮助将非常感激。谢谢!

1 个答案:

答案 0 :(得分:2)

IFAIK,时间不包括TestInitialize。 此外,您可以使用计时器:

this.TestContext.BeginTimer("transaction name");  
//the code you want to measure   
this.TestContext.EndTimer("transaction name");