关于单元测试的非常基本的问题

发布于 2024-12-06 02:53:16 字数 591 浏览 0 评论 0原文

我有一个这样的类 -

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花开半夏魅人心 2024-12-13 02:53:16

类中有3个方法。

您必须为三种方法编写单元测试。

对于

public <Returntype> MyClass(string ConString)
{

}

应该至少有两个单元测试。

1) 当 ConString 为 Null 或 Empty 时您的代码会执行什么操作。如果它为 null 或空,那么您必须捕获异常

2) 当连接字符串正确时,您将显示的最后一个语句或确认是什么。

有关 RhinoMocks 的更多信息链接

There are three methods in the class.

You have to write unit test for three methods.

For

public <Returntype> MyClass(string ConString)
{

}

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

酷到爆炸 2024-12-13 02:53:16

假设您的类创建了一些真实的数据库,您有两种选择来测试此类:

  1. 让类创建并释放真实的数据库,并让测试断言数据库已按预期创建。
  2. 使用数据库模拟,并让测试断言对模拟的调用是正确的。如果您想使用此选项,您必须再次选择:

    <块引用>

    a.不要更改您的代码并使用支持方法调用拦截的 Mocking Framework,例如 TypeMock.
    b.更改您的代码以具有采用数据库接口的c'tor或属性(又名
    依赖注入 ),并使用RhinoMocks来模拟DB接口。

希望它有所帮助,也许您可​​以提供问题的更多详细信息,以便答案可以更详细:-)

Assuming your class creates some real DB, you'd have two options testing this class:

  1. Let the class create and release the real DB, and have the tests assert that the DB is created as expected.
  2. Use a DB Mock, and have the tests assert that the calls to the mock were correct. If you want to use this option, you'd have, again, to choose:

    a. Don't change your code and use Mocking Framework which supports method call interecption such as TypeMock.
    b. Change your code to have a c'tor or property which takes interface of the DB (AkA Dependancy Injection), and use RhinoMocks to mock the DB interface.

Hope it helps, and maybe you could provide more details to the question, so the answer could be more detailed :-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文