这周的学习笔记我想写点自己关于实验中碰到的问题和感想。
因为这次做的是白盒测试,所以我决定去测试一下上回测试的app的功能函数。
这次我用的是单元测试项目来做的白盒测试:
创建单元测试的步骤:
1.点击 “文件”->“添加”->“新建项目”
2.选择 windows应用程序-> 单元测试项目
3.在解决方案资源管理器中为单元测试项目下的引用上右击选择添加引用
4.选择解决方案下的项目中的用来测试的win8应用
接下来是单元测试的代码部分的编写了:
我要测试的是该项目中的一个字符串转化编码的函数,函数的功能是把字符串从gb2312编码转成utf8
public string GB2312ToUTF8(string str)
{
try
{
Encoding uft8 = Encoding.GetEncoding("UTF-8");
Encoding gb2312 = Encoding.GetEncoding("GBK");
byte[] temp = gb2312.GetBytes(str);
byte[] temp1 = Encoding.Convert(gb2312, uft8, temp);
string result = uft8.GetString(temp1,0,temp1.Length);
return result;
}
catch(Exception ex)//(UnsupportedEncodingException ex)
{
return null;
}
}
这是原函数的代码部分,然后在单元测试UNITTEST1.cs文件中加入下面这句话引用被测试项目的namespace
using 这是猜灯谜游戏;
紧接着就是编写测试函数了,我写的TestMethod1:
public void TestMethod1()
{
gamePage gp = new gamePage();
string str = "猜灯谜";
Encoding uft8 = Encoding.GetEncoding("UTF-8");
Encoding gb2312 = Encoding.GetEncoding("GBK");
byte[] temp = gb2312.GetBytes(str);
byte[] temp1 = Encoding.Convert(gb2312, uft8, temp);
string result = uft8.GetString(temp1, 0, temp1.Length);
string output = gp.GB2312ToUTF8(str);
Assert.AreEqual(result, output);
}
在这个函数中创建一个测试用例用来测试函数的功能是否如预期所示,然后自己做一遍编码的转换存到
字符串result中,最后创建一个断言判断单元测试中的函数输出结果和预期结果result是否一致。
然后我就去运行了一下这个单元测试项目,结果是这样的:
然后我就去寻找原因了,最后我总结了一下出现这个结果的原因:
我觉得这是因为被测试项目本身是一个win8应用,里面的类文件都是控制布局的类文件,也就是说都是UI对象的类,
所以运行之后会提示请使用UI的编码测试,而不是单元测试,要解决这个问题就只能换一个有自己的功能类的win8应用,
但是大家写的都是功能嵌入在布局类中的win8应用,所以没法解决这个问题。