2011-09-22 7 views
6

Per alcuni test, è necessario eseguire un test guidato dai dati con una configurazione generata (tramite riflessione) nel metodo ClassInitialize (utilizzando la reflection). Ho provato tutto, ma non riesco a impostare correttamente la sorgente dati.MsTest, DataSourceAttribute - come farlo funzionare con un file generato in runtime?

Il test acquisisce un elenco di classi in un file csv (una riga per classe) e quindi verificherà che i mapping al database funzionino correttamente (ad esempio, tenta di ottenere un elemento dal database per ogni entità, che verrà lanciare un'eccezione quando la struttura della tabella non corrisponde).

Il TestMethod è:

[DataSource(
    "Microsoft.VisualStudio.TestTools.DataSource.CSV", 
    "|DataDirectory|\\EntityMappingsTests.Types.csv", 
    "EntityMappingsTests.Types#csv", 
    DataAccessMethod.Sequential) 
] 
[TestMethod()] 
public void TestMappings() { 

Ovviamente il file è EntityMappingsTests.Types.csv. Dovrebbe essere nella DataDirectory.

Ora, nel metodo Initialize (contrassegnato con ClassInitialize) lo metto insieme e quindi provo a scriverlo.

DOVE dovrei scrivere a? DOVE È la DataDirectory?

ho provato:

File.WriteAllText(context.TestDeploymentDir + "\\EntityMappingsTests.Types.csv", types.ToString()); 
File.WriteAllText("EntityMappingsTests.Types.csv", types.ToString()); 

Sia risultato "l'adattatore unit test è riuscito a connettersi alla sorgente dati o leggere i dati". Più esattamente:

Dettagli errore: Il motore di database Microsoft Jet Impossibile trovare l'oggetto 'EntityMappingsTests.Types.csv'. Assicurarsi che l'oggetto esista e che si scriva correttamente il nome e il nome del percorso.

Quindi dove devo mettere quel file?

Ho anche provato a scriverlo nella directory corrente e a prendere la parte DataDirectory - stesso risultato. Purtroppo, qui c'è un supporto per il debug limitato.

+0

Utilizzare lo strumento ProcessMonitor da http://technet.microsoft.com/en-us/sysinternals/bb896645. Metti un filtro su MSTest.exe o sul qtagent32.exe associato e individua le posizioni da cui tenta di caricare e in quale momento nel processo di caricamento del test. Quindi si prega di fornire un aggiornamento su questi dettagli qui. – kroonwijk

+0

Puoi postare come vuoi così posso accettarlo. Stupido me ... il tuo consiglio ha funzionato, ha funzionato. – TomTom

+0

Certo, ha fatto. – kroonwijk

risposta

5

Utilizzare lo strumento ProcessMonitor da technet.microsoft.com/en-us/sysinternals/bb896645. Metti un filtro su MSTest.exe o sul qtagent32.exe associato e individua le posizioni da cui tenta di caricare e in quale momento nel processo di caricamento del test. Quindi si prega di fornire un aggiornamento su questi dettagli qui.

1

Dopo aver aggiunto il file CSV al progetto VS, è necessario aprirne le proprietà. Impostare la proprietà "Copia nella directory di output" su "Copia sempre". DataDirectory imposta automaticamente il percorso dell'eseguibile compilato, che viene eseguito dalla directory di output in modo tale da trovarlo lì.

Problemi correlati