Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Visual studio 2010 从默认项目复制目录_Visual Studio 2010_Unit Testing - Fatal编程技术网

Visual studio 2010 从默认项目复制目录

Visual studio 2010 从默认项目复制目录,visual-studio-2010,unit-testing,Visual Studio 2010,Unit Testing,我不熟悉单元测试项目。我们目前正在使用NUnit,等待Resharper许可证的到来 因此,我正在修改单元测试项目的数据库标准化。问题是,以前的实现合并了一个SQL脚本文件,随着时间的推移,随着数据库模式随客户机请求的变化,该文件最终变得过时 我们使用它来保持数据库模式的最新。因此,我们需要做的是创建一个进程来复制包含所有模式文件的当前db文件夹,或者创建一种方法来导航到脚本文件夹,并在测试之前执行脚本文件 当前想法 将数据库脚本文件夹从启动项目复制到其生成上的测试文件夹 有一种从测试文件夹中

我不熟悉单元测试项目。我们目前正在使用NUnit,等待Resharper许可证的到来

因此,我正在修改单元测试项目的数据库标准化。问题是,以前的实现合并了一个SQL脚本文件,随着时间的推移,随着数据库模式随客户机请求的变化,该文件最终变得过时

我们使用它来保持数据库模式的最新。因此,我们需要做的是创建一个进程来复制包含所有模式文件的当前db文件夹,或者创建一种方法来导航到脚本文件夹,并在测试之前执行脚本文件

  • 当前想法
  • 将数据库脚本文件夹从启动项目复制到其生成上的测试文件夹
  • 有一种从测试文件夹中引用db文件夹的方法
欢迎在此之外的进一步建议

目前的执行情况:


我正在使用
Microsoft.SqlServer.Management.Common
&
Microsoft.SqlServer.Management.Smo
通过测试项目扩展SQL Server访问权限

protected virtual void BeforeTest()
{
    ...
    using(var conn = (SqlConnection) CPLGlobal.GetConnection()) {
        conn.Open();

        var server = new Server(new ServerConnection(conn));

        //Check if Database Exists, if so Delete the database
        if(server.Databases.Contains("cplstore_int")) {
            server.KillDatabase("cplstore_int");
        }

        //Create the database and obtain reference to it for processing.
        server.Databases.Add(new Database(server , "cplstore_int"));
        var db = server.Databases["cplstore_int"];



    }

    ...
}

两点删除和创建db,对于定期运行单元测试来说太昂贵了,我只会对创建db的单元测试这样做,而且只有在强制的情况下才会这样做。单元测试是什么,如果是业务逻辑的话,那么你应该模拟数据库交互,或者编写代码,这样它就不关心持久性了。我们没有通过DBcontext向数据库中填充足够的实时数据来运行测试,而这几乎是不可能的。首先需要数据库符合模式,然后运行测试。但是,由于您可以单独运行任何测试,我想我可以验证数据库是否存在,然后检查要测试的表是否存在必需的字段,但仍然需要我保持至少3个模式的最新状态,而不仅仅是1个。我们这样做。我们有一个描述模式的xml文档,然后我们做一个与实际的比较作为“单元测试”。我们强制首先运行该测试,如果失败,则跳过假定数据库设置正确的所有其他测试。不完全是pukka,但效率很高。