电梯调度部分函数单元测试
int TOW(int Foutside, int Fcurrent, int Fmax, int Fmin, int N, int state) //T1,T2作为常量 { if (state == 0)//外信号与电梯运行方向相同,且在前方 return System.Math.Abs(Foutside - Fcurrent) * T1 + N * T2; else if (state == 1)//外信号与电梯运行方向相同,且在后方 return (System.Math.Abs(Fmax - Fcurrent) + System.Math.Abs(Fmax - Fmin) + System.Math.Abs(Fmin - Foutside)) * T1 + N * T2; else //外信号与电梯运行反方向相反 return (System.Math.Abs(Fmax - Fcurrent) + System.Math.Abs(Fmax - Foutside)) * T1 + N * T2; }
这是计算当前乘客等待时间的一个方法,Foutside表示外信号所在楼层,Fcurrent表示电梯当前所在楼层,Fmax为电梯运行方向的最远层,Fmin为电梯运行反方向的最远层。 N表示需要停留的楼层总数,t1为电梯运行一个楼层的时间,t2为电梯在一个楼层停留时间。
单元测试程序如下
public void TOWTest() { MyScheduler_Accessor target = new MyScheduler_Accessor(); // TODO: 初始化为适当的值 int Foutside = 0; // TODO: 初始化为适当的值 int Fcurrent = 0; // TODO: 初始化为适当的值 int Fmax = 0; // TODO: 初始化为适当的值 int Fmin = 0; // TODO: 初始化为适当的值 int N = 0; // TODO: 初始化为适当的值 int state = 0; // TODO: 初始化为适当的值 int expected = 0; // TODO: 初始化为适当的值 int actual; actual = target.TOW(Foutside, Fcurrent, Fmax, Fmin, N, state); Assert.AreEqual(expected, actual); Assert.IsTrue(actual==0); } } }
结果为通过。
改为复杂一点的测试数据。
public void TOWTest() { MyScheduler_Accessor target = new MyScheduler_Accessor(); // TODO: 初始化为适当的值 int Foutside = 15; // TODO: 初始化为适当的值 int Fcurrent = 12; // TODO: 初始化为适当的值 int Fmax = 16; // TODO: 初始化为适当的值 int Fmin = 2; // TODO: 初始化为适当的值 int N = 3; // TODO: 初始化为适当的值 int state = 1; // TODO: 初始化为适当的值 int expected = 0; // TODO: 初始化为适当的值 int actual; actual = target.TOW(Foutside, Fcurrent, Fmax, Fmin, N, state); Assert.AreEqual(expected, actual); Assert.IsTrue(actual==170); }
测试结果为通过。
这是一个很简单的函数,但是从中可以看到单元测试的作用。