这是我第一次在C#中编写单元测试,我正在为其他人的代码编写单元测试。所以请回答好。在单元测试中,我调用跟踪器类并将电压变量ctp.Voltagel(它是公共的)设置为1.当我运行测试时,变量变为null。我不确定为什么变量的状态不会停留在1.任何想法为什么?这是我的代码。在tracerCtrl的构造函数中,TracerParameters tp被声明为private。所以我无法从单元测试中访问它。我需要在TracerParameters中设置它。
[TestMethod]
public void TestGetScanResultVoc()
{
TracerCtrl tracerCtrl;
TracerParameters tp;
int channel = 0;
int dataSize = 500;
int []data;
data = new int[dataSize];
int[] pyrn1Data = null;
int result = 0;
tracerCtrl = new TracerCtrl();
tp = new tracerParameters();
tp.Voltagel = 1;
tracerCtrl.processData(data, dataSize, channel);
}
tracerCtrl代码
public void processData(int[] data, int dataSize, int channel)
{
int i = 0;
if (channel == tp.Voltagel) //tp.Voltagel I get null
{
pyrn1Data = new int[dataSize];
pyrn1DataSize = dataSize;
for (i = 0; i < dataSize; i++)
{
pyrn1Data[i] = data[i];
}
bGotPyrn1 = true;
}
}
答案 0 :(得分:1)
tp
中的processData
不能与tp
中的TestGetScanResultVoc
变量相同(这是一个局部变量,并且您不能将其作为参数)。
右键点击tp
中的processData
,然后点击&#34;转到声明&#34;看看变量实际来自哪里。然后确保设置正确的变量。
答案 1 :(得分:0)
您似乎实例化tp
但从未将其绑定到tracerCtrl
。您可能需要执行类似
tracerCtrl.Parameters = tp;
或者TracerCtrl
有一个带TracerParameters
个对象的构造函数,
tp = new tracerParameters();
tp.Voltagel = 1;
tracerCtrl = new TracerCtrl(tp);
编辑:之前没有注意到这一点,但我很好奇tp
代码中TracerCtrl
的定义。我希望if
语句看起来更像:
if (channel == thisParameters.Voltagel)
如果Parameters
确实存储了TracerCtrl
个参数。
如果您使用有关TracerCtrl
的更多信息更新您的问题,我很乐意修改。