我有很多依赖于某个数据库配置的单元测试。我想每次运行单元测试时都执行一个脚本,这样数据库就可以了,并且由于DB上的数据错误,测试不会失败。我目前有一个SQL脚本,可以将正确的数据放在数据库中。
有没有办法从Visual Studio中做到这一点(2008年会很棒)?
先谢谢你的配偶。
答案 0 :(得分:2)
为什么不以编程方式执行脚本?您可以编写一个实用程序方法,它接受文件名和数据库连接并执行它。
SQLHelper.executeScript("example.sql", DatabaseConnection.get());
这只是一行代码,可以复制和粘贴。也许您甚至不必分配数据库连接,如果它已经建立。你的测试将在任何地方运行。
我为每个测试套件使用单独的脚本。所以我不必保持SQL脚本同步。并且执行大量不需要的SQL语句会降低测试速度,从而缩短开发周期。
答案 1 :(得分:2)
您可以使用类似[ClassInitialize]
和[AssemblyInitialize]
的属性来实现方法,这些属性在类或程序集中的第一个测试之前执行一次。在这种方法中,您可以运行脚本。
您还可以编写一个在每个测试([TestInitialize]
)中调用的方法,该方法知道它是否已被执行。这样您就可以在每次需要它的测试之前运行脚本,但是当您只运行不需要它的测试时则不行。
答案 2 :(得分:0)
是的,你可以。 您可以将其作为TestInitialise或Pre-Test的一部分运行。