0

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

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。此外,您可以与 Timer 一起使用:

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