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.
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
Puoi postare come vuoi così posso accettarlo. Stupido me ... il tuo consiglio ha funzionato, ha funzionato. – TomTom
Certo, ha fatto. – kroonwijk