关于单元测试的基本问题
本文关键字:问题 单元测试 | 更新日期: 2023-09-27 18:09:15
我有一个这样的类-
public class MyClass : ISomeInterface
{
public MyClass(string connString)
{
// set conn string on a private member
}
// interface methods
public CreateDb(string dbName) {...}
public DropDb(string dbName) {...}
public string GetLastError() {...}
}
这是遗留代码的一部分,我必须编写unittest。现在,如果我只想为这个类编写测试,我该如何进行,以100%的测试覆盖率覆盖所有的公共方法?谁能在课堂上提供一个小样本?
EDIT - CreateDb和DropDb捕获SqlException并设置错误消息。错误消息通过公共接口方法GetlastError()
公开注意:我使用的是RhinoMocks &MSTest
类中有三个方法。
你必须为三个方法编写单元测试。
public <Returntype> MyClass(string ConString)
{
}
至少应该有两个单元测试。
1)当ConString为Null或Empty时,代码会做什么。如果它为null或空,则必须捕获异常
2)当连接字符串正确时,您将显示的最后一条语句或确认是什么
关于RhinoMocks的更多信息Link
假设您的类创建了一些真正的数据库,您将有两个选项来测试这个类:
- 让类创建并释放真正的DB,并让测试断言DB是按预期创建的。
- 使用DB模拟,并让测试断言对模拟的调用是正确的。如果您想使用此选项,您必须再次选择:
。不要修改你的代码,使用支持方法调用拦截的Mocking框架,比如TypeMock。
b.修改你的代码,让它有一个c'tor或属性,它接受DB的接口(又名依赖注入),并使用RhinoMocks来模拟DB接口。
希望有帮助,也许你可以提供更多的细节问题,所以答案可以更详细:-)