2017-08-14 6 views
12

J'ai un test d'intégration qui crée une base de données de type Microsoft.SqlServer.Management.Smo.Database:C# SMO Base de données ne consignent pas la création

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(); 

Quand je lance le test d'intégration via le CLI pour NUnit, lorsque la fin du test, le SQL pour la création de la base de données est transférée vers la console. Cela encombre la sortie et n'est pas quelque chose que je veux voir lors de l'exécution de ce test d'intégration. Comment puis-je empêcher cela de se produire?

+1

Quand je lance ci-dessus dans une application de la console (VS2015/Smo 12,0), je ne reçois pas de sortie SQL. Observez-vous également le même comportement dans une application de console? Est-ce que cela se produit UNIQUEMENT lors de l'exécution avec NUnit CLI? En fait, pour moi, j'aimerais voir les SQL générés enregistrés! Aussi, quelle est votre version de Smo Assembly? – Subbu

+1

Envisagez-vous de répondre aux questions ci-dessus? –

Répondre

3

Ceci est une poursuite d'oie et ne peut pas être reproduit.

Je suppose qu'il y a peut-être une certaine confusion, peut-être que l'un de vos scripts est un SQL Print ou un peu comme ça. Étant donné que l'exécution de ce test unitaire pour créer un DB SQL via Sql Management Objects ne pas générer le script de création SQL.

enter image description here

exécution Même directement à partir de la ligne de commande ne note pas le script de création de SQL. Voici la repro:

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(); 
    } 
} 

Résultats:

enter image description here