单体测试规范:
SourceFile文件夹:存放被测试代码
BaseFile文件夹:存放测试构建代码
InputFile文件夹:存放导入资源
UnitTest.cs: 存放单体测试代码,每个对应单体测试方法名字最好和单体测试式样书对应,这样更清晰明了
namespace UnitTestProject1
{[TestClass]
public class UnitTest1
{
[TestMethod] // 测试方法,每新建一个测试方法都需要有该应用
public void TestMethod1()
{
//构建测试环境,一般用new 方法创建测试实例,尽量少用static静态变量
Assert.AreEqual(期望值, 被测试值);
}
}
}
测试动态库和私有方法的测试实例
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
object o = new object();
Type t = null;
//测试前执行
[TestInitialize()]
public void MyTestInitialize()
{
string path = @"C:\Users\fanggn\Documents\Visual Studio 2012\Projects\ForTest\ForTest\bin\Debug\ForTest.dll";
Assembly ass = Assembly.LoadFrom(path);
t = ass.GetType("ForTest.Class1");
o = Activator.CreateInstance(t, true);
}
[TestMethod]
public void TestMethod1()
{
object[] param = new object[2] { 20, 5 };
MethodInfo minfo = o.GetType().GetMethod("Minus");
Assert.AreEqual(15,minfo.Invoke(o,param));
}
[TestMethod]
public void TestMethod2()
{
Assembly ass = Assembly.LoadFrom(@"C:\Users\fanggn\Documents\Visual Studio 2012\Projects\ForTest\ForTest\bin\Debug\ForTest.dll");
t = ass.GetType("ForTest.Class2");
object oo = Activator.CreateInstance(t, new object[] { 1, 2, 3 });
object[] param = new object[3] { 20, 5, oo };
MethodInfo minfo = o.GetType().GetMethod("Plus");
Assert.AreEqual(25, minfo.Invoke(o, param));
}
//执行私有方法
[TestMethod]
public void TestMethod3()
{
object[] param = new object[2] { 20, 5 };
MethodInfo minfo = t.GetMethod("QuYu", BindingFlags.NonPublic | BindingFlags.Instance);
Assert.AreEqual(0, minfo.Invoke(o, param));
}
[TestMethod]
public void TestMethod4()
{
object[] param = new object[2] { 20, 5 };
MethodInfo minfo = t.GetMethod("QuYu1");
Assert.AreEqual(0, minfo.Invoke(o, param));
}
//测试完成后执行
[TestCleanup]
public void MyTestClear()
{
o = null;
}
}
}