使用单元测试时,代码中的变量显示为空
本文关键字:变量 显示 代码 单元测试 | 更新日期: 2023-09-27 17:53:38
这是我第一次用c#写单元测试,我在别人的代码上写单元测试。所以请在回复中友好一点。在单元测试中,我调用跟踪器类并设置电压变量ctp。电压(它是公共的)到1。当我运行测试时,变量出现为null。我不知道为什么变量的状态不保持在1。知道为什么吗?这是我的代码。在tracerCtrl的构造函数中,TracerParameters tp被声明为私有的。所以我不能从单元测试中访问它。我需要在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 Code
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;
}
}
processData
中的tp
不能与TestGetScanResultVoc
中的tp
相同(这是一个局部变量,并且您不将其作为参数传递)。
右键单击processData
中的tp
,然后"转到声明"以查看该变量的实际来源。然后确保你设置了正确的变量
似乎您实例化了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
的更多信息更新你的问题,我很乐意修改