关于单元测试的非常基本的问题
我有一个这样的类 -
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() {...}
}
它是遗留代码的一部分,我必须编写单元测试。现在,如果我想仅为此类编写测试,我该如何继续以 100% 测试覆盖率覆盖所有公共方法? 任何人都可以提供班级的小样本吗?
编辑 - CreateDb 和 DropDb 捕获 SqlException 并设置错误消息。错误消息通过公共接口方法 GetlastError()
公开 注意:我正在使用 RhinoMocks & MS测试
I have a class like this -
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() {...}
}
It is part of a legacy code and I have to write UnitTests. Now, if I want to write tests just for this class, how do I proceed such that I cover all public methods with 100% test coverage ?
Can anyone provide a small sample w.r.t the class ?
EDIT - The CreateDb and DropDb catch SqlException and sets error message. Error Message is exposed via a public interface method GetlastError()
NOTE: I am using RhinoMocks & MSTest
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
类中有3个方法。
您必须为三种方法编写单元测试。
对于
应该至少有两个单元测试。
1) 当 ConString 为 Null 或 Empty 时您的代码会执行什么操作。如果它为 null 或空,那么您必须捕获异常
2) 当连接字符串正确时,您将显示的最后一个语句或确认是什么。
有关 RhinoMocks 的更多信息链接
There are three methods in the class.
You have to write unit test for three methods.
For
There should atleast two unit test.
1) What your code does when ConString is Null or Empty. If it is null or empty then you have to catch the Exception
2) When Connection string is correct, What is last statement or confirmation you will be displaying.
More info on RhinoMocks Link
假设您的类创建了一些真实的数据库,您有两种选择来测试此类:
希望它有所帮助,也许您可以提供问题的更多详细信息,以便答案可以更详细:-)
Assuming your class creates some real DB, you'd have two options testing this class:
Hope it helps, and maybe you could provide more details to the question, so the answer could be more detailed :-)