在带有system.datetime的编码webtest中引用为空

本文关键字:webtest 引用 编码 system datetime | 更新日期: 2023-09-27 18:16:56

我非常兴奋地尝试了VS 2012 ultimate中的新功能,它允许您使用编码的web测试运行整个负载测试。

不幸的是,我遇到了一点问题。在尝试调试我生成的web测试(并在之后编辑)时,我一直在简单的声明行上获得NullReferenceException。我简直想不明白为什么会发生这种事。下面是代码:

[Priority(0)]
public class CreateSessionCoded : WebTest
{
    public string[] SessionID;
    public string[] SessionTime;
    public string[] CreatedTime;
    public CreateSessionCoded()
    {
        this.Context.Add("Parameter1", "");
        this.PreAuthenticate = true;
    }
    public override IEnumerator<WebTestRequest> GetRequestEnumerator()
    {
        //string CurrentITR = this.Context.WebTestIteration.ToString();
        SessionID[this.Context.WebTestIteration] = Guid.NewGuid().ToString();
        SessionTime[this.Context.WebTestIteration] = System.DateTime.UtcNow.ToString();
        CreatedTime[this.Context.WebTestIteration] = System.DateTime.Now.ToString();
    ...

代码继续,但我得到NRE的部分是在最后两行,我试图将值分配给我的SessionTimeCreatedTime参数。

分配给SessionID时不会发生这种情况,因此无论如何都与WebTestIteration无关。如果我尝试将不同的字符串(任何随意的字符串,例如"blabla")分配给相同的参数,也会发生这种情况。

我真的很感激任何帮助!提前感谢!:)

在带有system.datetime的编码webtest中引用为空

定义了三个数组:

public string[] SessionID;
public string[] SessionTime;
public string[] CreatedTime;

但是,在您尝试使用它们之前,它们不会初始化。

基本上,你是这样做的:

string[] foo;
foo[1] = "bar";

你需要这样做:

string[] foo = new string[10]; // sized appropriately
foo[1] = "bar";