2008-08-21 15 views
7

Hat jemand Erfahrung damit, MSTest dazu zu bringen, hibernate.cfg.xml ordnungsgemäß in das Ausgabeverzeichnis zu kopieren? Alle meine MSTests schlagen fehl, wobei ich den Fehler hibernate.cfg.xml nicht finden kann (Ich habe es auf Immer kopieren gesetzt), aber meine MBUnit-Tests bestehen.MSTest und NHibernate

Antwort

12

Sie können versuchen, das DeploymentItemAttribute zu einem Ihrer Tests hinzuzufügen oder Ihre .testrunconfig-Datei zu bearbeiten und die Datei zur Deployment-Liste hinzuzufügen.

1

ein Workaround statt einer Antwort: NHibernate unterstützt programmatic configuration. Sie können also Ihre eigenen nativen Eigenschaften/Konfigurationsdateien schreiben und beim Start in Hibernate-Konfigurationen parsen.

2

Ran in das gleiche Ding vor ein paar Wochen - das ist eigentlich eine bug with MSTest - Ich glaube, das wurde mit der jüngsten Service Pack Release korrigiert (obwohl es immer noch sagt "Active"). Wenn nicht, war alles, was ich tun musste, direkt auf meine hibernate.cfg.xml zu verweisen (schlampig, aber funktioniert zum Testen - dies bezieht sich auf die Datei hibernate.cfg.xml in meinem Testprojekt aus dem Ordner "TestResults"):

try 
      { 
       sessionFactory = new Configuration() 
        .Configure() 
        .BuildSessionFactory(); 
      } 
      // Assume we are in "MSTest mode" 
      catch (Exception) 
      { 
       sessionFactory = new Configuration() 
        .Configure(@"..\..\..\Program.Tests\" + @"\hibernate.cfg.xml") 
        .BuildSessionFactory(); 
      } 
1

Ich möchte meine NHibernate-Konfigurationsdateien als eingebettete Ressourcen markieren und die Configuration.Configure() - Überladung verwenden, die Konfigurationsdateien aus den Assembly-Ressourcen liest.

4

Bearbeiten Sie localtestrun.testrunconfig (in Ihrem Ordner mit den Lösungselementen). Wählen Sie die Bereitstellungsoption, und fügen Sie die Datei hibernate.cfg.xml zur Liste der zusätzlichen Dateien hinzu, die bereitgestellt werden sollen. Die Datei sollte dann in das Ausgabeverzeichnis kopiert werden, in dem der Test ausgeführt wird.