Ho sfogliato un paio di problemi con Nunit e Visual Studio dichiarati su StackOverflow, ma non riesco a trovare alcun thread in cui si adatti la mia custodia.NUnit C# Test Progetto che fa riferimento ad altre DLL
Sto usando NUnit per testare il codice che ho scritto, sto caricando il file * .csproj del mio testproject in NUnit GUI Tool.
Ho capito il problema, ma credo di non aver trovato soluzione. Cosa sto facendo:
I riferimento a 2 altri progetti entrambi sono progetti DLL. Ciò significa che ho ottenuto 3 progetti: TestProject (DLL), SettingsManager (DLL), DatabaseInterface (DLL). Tutti sono in una soluzione. Il progetto DatabaseInterface contiene chiamate API native a un altro, C++ x86, DLL, ma non fa esplicito riferimento a questa DLL tramite l'istruzione "using".
Uno di entrambi è un SettingsManager, che memorizza alcuni dati di configurazione come i percorsi & così via, ma comunque. Entrambi, Testproject e DatabaseInterface fanno riferimento a SettingsManager.
Tutti e 3 i progetti sono creati in "Debug" e in "AnyCPU". Fare riferimento a & utilizzando solo il SettingsManager nel mio TestProject funziona correttamente ma quando aggiungo il DatabaseInterface, ho ottenuto una BadImageFormatException che mi dice che sta provando a caricare un file con un formato sbagliato.
Per renderlo più visibile, questo è lavoro:
using myNamespace.Settings; // contains SettingsManager
using System;
using NUnit.Framework;
namespace myNamespace.myTestProject
{
[TestFixture]
public class TestProject
{
[SetUp]
public void SetUp()
{
}
[Test]
public void ReadDbFile()
{
string s = SettingsManager.DbFile; // gets the path of the db file
}
}
}
NUnit uscita:
Questo non funziona:
using myNamespace.Settings; // contains SettingsManager
using myNamespace.DbInterface; // contains DatabaseInterface, which contains native calls to C++ dll
using System;
using NUnit.Framework;
namespace myNamespace.myTestProject
{
[TestFixture]
public class TestProject
{
DatabaseInterface instance = null;
[SetUp]
public void SetUp()
{
}
[Test]
public void ReadDbFile()
{
string s = SettingsManager.DbFile; // gets the path of the db file
}
}
}
Il secondo tentativo, che contiene la
using myNamespace.DbInterface;
getta uno myNamespace.myTestProject.TestProject (TestFixtureSetUp): SetUp: System.BadImageFormatException: Die Datei oder Assembly "DatabaseInterface, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null" o un riferimento non trovato. Si è cercato di caricare un file di un formato sbagliato ".
anche se tutti e 3 i progetti sono costruire utilizzando debug e AnyCPU.
sto usando un file * .config di serie, come quello della NUnit TestProject. Forse alcuni è sbagliato in questo.
qualcuno ha incontrato lo stesso errore nel tentativo di caricare il codice da un altro DLL finora? Può essere un problema che entrambi i progetti (test & database) fanno riferimento al SettingsManager DLL? L'ho fatto fare qualcosa di grave sbagliato?
Ho ricontrollato la configurazione della build in tutti e 3 i progetti ma non sono riuscito a trovare le impostazioni che potrebbero essere errate e spiega la BadImageFormatException.
probabilmente era questo il problema, credo. Perché sto usando un Win7 a 64 bit tutto ciò che significa "AnyCPU" sarà 64 bit più tardi. Quello era l'errore con la DLL DatabaseInterface che era compilata a 32 bit. – inva