我的负载测试中的一些测试涉及两个步骤来获取我需要的数据,但是我想单独测试该过程的每个组件所花费的时间,以便我可以轻松地将其保存到我的负载测试数据库中,并允许另一个人创建一个报告。例如我需要测试这两种方法的时间:
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 语句。任何帮助将非常感激。谢谢!