Sco*_*y H 11 c# sql-server nunit smo nunit-console
我有一个集成测试,创建一个类型的数据库Microsoft.SqlServer.Management.Smo.Database:
var defaultConnectionConnectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString();
var sqlConnection = new SqlConnection(defaultConnectionConnectionString);
var serverConnection = new ServerConnection(sqlConnection);
_server = new Server(serverConnection);
_database = new Database(_server, _integrationTestingDatabaseName);
_database.Create();
Run Code Online (Sandbox Code Playgroud)
当我通过CLI为NUnit运行集成测试时,测试完成后,用于创建数据库的SQL将被转储到控制台.这会使输出变得混乱,并且在运行此集成测试时不是我想要看到的.我怎么能阻止这种情况发生?
这是一种徒劳的行为,无法重现。
我猜可能存在一些混乱,也许你的一个脚本做了SQL Print这样的一个或一些转移注意力的事情。因为执行此单元测试通过 Sql 管理对象创建 SQL dB 不会输出SQL 创建脚本。
即使直接从命令行执行也不会记录 SQL 创建脚本。这是重现:
using NUnit.Framework;
using ConsoleApplication1;
using System.IO;
using System.Diagnostics;
[TestFixture]
public class UnitTest1
{
static FileStream objStream;
[SetUp]
public static void Setup()
{
objStream = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "\\AAA_Output.txt", FileMode.OpenOrCreate);
TextWriterTraceListener objTraceListener = new TextWriterTraceListener(objStream);
Trace.Listeners.Add(objTraceListener);
Trace.WriteLine("===================================");
Trace.WriteLine("App Start:" + DateTime.Now);
Trace.WriteLine("===================================");
}
[TestCase]
public void TestMethod1()
{
Program.CreateDB();
}
[TearDown]
public static void TearDown()
{
Trace.Flush();
objStream.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
结果: