Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于单元测试的基本问题_C#_Unit Testing_Rhino Mocks - Fatal编程技术网

C# 关于单元测试的基本问题

C# 关于单元测试的基本问题,c#,unit-testing,rhino-mocks,C#,Unit Testing,Rhino Mocks,我有一节这样的课- public class MyClass : ISomeInterface { public MyClass(string connString) { // set conn string on a private member } // interface methods public CreateDb(string dbName) {...} publi

我有一节这样的课-

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&MSTest

类中有三种方法

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

为了

公共MyClass(字符串构造)
{
}
应该至少有两个单元测试

1) 当解析为Null或空时,代码所做的操作。如果它为null或空,则必须捕获异常

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


关于Rhinomock的更多信息

假设您的类创建了一些真实的DB,那么您有两个选项来测试这个类:

  • 让类创建并释放真实的DB,并让测试断言DB是按预期创建的
  • 使用DB,并让测试断言对模拟的调用是正确的。如果要使用此选项,您必须再次选择:

    a。不要更改代码,使用支持方法调用交互选项的模拟框架,例如。
    B将代码更改为具有接受DB接口(AkA)的c'tor或属性,并使用Rhinomock模拟DB接口


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

    您需要提供有关CreateDb和DropDb方法内容的更多信息,特别是关于类的依赖关系。100%语句、分支或路径覆盖率?你永远无法衡量你的测试覆盖率,只能衡量你的执行覆盖率。仅仅因为代码是在测试期间执行的,并不意味着它被测试了createDb和DropDb捕获SqlException并设置错误消息。错误消息通过公共接口方法GetlastError()公开,createDb和DropDb捕获SqlException并设置错误消息。错误消息通过公共接口方法GetlastError()公开
    public <Returntype> MyClass(string ConString)
    {
    
    }