我的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 存储在一个通用对象中,并最终让测试初始化有一个重要的转变声明。任何帮助将非常感激。谢谢!
答案 0 :(得分:2)
IFAIK,时间不包括TestInitialize。 此外,您可以使用计时器:
this.TestContext.BeginTimer("transaction name");
//the code you want to measure
this.TestContext.EndTimer("transaction name");