我有一个这样的课 -
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() {...}
}
它是遗留代码的一部分,我必须编写UnitTests。现在,如果我想为这个类编写测试,我该如何进行,以便覆盖100%测试覆盖率的所有公共方法? 有人可以提供一个小样本吗?
编辑 - CreateDb和DropDb捕获SqlException并设置错误消息。错误消息通过公共接口方法GetlastError()
公开注意:我正在使用RhinoMocks& MSTest的
答案 0 :(得分:0)
班上有三种方法。
您必须为三种方法编写单元测试。
有关
public <Returntype> MyClass(string ConString)
{
}
应至少进行两次单元测试。
1)当ConString为Null或Empty时,代码会执行什么操作。如果它为null或为空,则必须捕获异常
2)当连接字符串正确时,您将显示的最后一个语句或确认是什么。
有关RhinoMocks Link
的更多信息答案 1 :(得分:0)
假设您的班级创建了一些真正的数据库,您将有两个选项来测试此类:
- 让类创建并释放真正的数据库,并让测试声明DB是按预期创建的。
- 使用数据库Mock,让测试断言对模拟的调用是正确的。如果您想使用此选项,您还可以选择:
醇>
一个。不要更改您的代码并使用支持方法调用interecption的Mocking Framework,例如TypeMock 湾将代码更改为具有DB(AkA Dependancy Injection)接口的c'tor或属性,并使用RhinoMocks模拟数据库接口。
希望它有所帮助,也许你可以提供更多细节问题,所以答案可能更详细: - )