Läuft MsTest von der Befehlszeile aus mit einer benutzerdefinierten assembly base Verzeichnis

Ich habe viel Forschung auf dem Netz und versucht, ein paar Einstellungen, aber ich konnte das Verhalten reproduzieren, laufen MsTest in Visual Studio 2012 auf der Kommandozeile.

Unsere Lösung besteht aus vielen Projekten, die bauen auf den gleichen Ordner bin wohnhaft in der Lösung-Ebene (z.B. C:\MySolution\bin) - dies ist der code-under-test (CUT). Die tests sind gruppiert in einem separaten Projekt, die sich in Ihrer eigenen Lösung und baut in seiner eigenen bin-Ordner (z.B. C:\MySolution\Tests\bin). Es gibt wirklich eine Menge von plugins, so wollen wir MsTest zu verweisen GESCHNITTEN bin-Ordner beim ausführen der test intead kopieren alles, um den Ordner TestResults. Wir haben dafür in Visual Studio 2012 durch Bearbeiten der .testrunconfig und die Angabe ".\bin" als "root-Ordner für die Baugruppen geladen werden" (in der Registerkarte "Unit-Test" bei der Bearbeitung der testrunconfig). So können wir laden der test-Lösung in VS2012 und führen Sie den Test ohne zu müssen, kopieren Sie die bin-Ordner Inhalt zu den TestResults-Verzeichnis.

Nun wollte ich erstellen .bat-Datei, die ausgeführt würde, MsTest die gleiche Weise wie in VS2012, so dass wir die weglassen können, starten Sie Visual Studio nur zum ausführen der tests. Ich arbeite jetzt wie ausführen MsTest auf der Kommandozeile, aber die haben schon ziemlich frustriert. Dies ist, was ich versucht habe (Befehl ausgeführt, der die Lösung zu level in einem VS-Eingabeaufforderung):

MsTest /testcontainer:Tests\bin\Tests.dll

Funktionierte dies nicht auf alle zu, es konnte noch nicht einmal den referenzierten dlls, Tests.dll ausführen müssen. So habe ich wieder verwendet die Konfiguration und es lief wieder:

MsTest /runconfig:LocalTestRun.testrunconfig /testcontainer:Tests\bin\Tests.dll

Trotzdem hat es nicht funktioniert. Könnte es beginnen die tests, aber alle von Ihnen gescheitert. Ich bekam eine Menge warnings der Art

Achtung: Testlauf Implementierung Problem: Die Baugruppe oder das Modul '....' direkt oder indirekt verwiesen wird, die von den container 'C:\MySolution\Tests\bin\tests.dll' wurde nicht gefunden.

und am Ende hieß es:

Die konfigurierte application-base-directory 'C:\MySolution\TestResults\User_Machine 2013-07-28 13_16_59\Out\bin" ist nicht vorhanden. Das test-Verzeichnis wird stattdessen verwendet werden.

Wenn ich änderte die option applicationBaseDirectory im testrunconfig zu einem absoluten Pfad (C:\MySolution\bin), es funktionierte. Noch immer erhalte ich viele Warnungen wie:

Achtung: Testlauf Implementierung Problem: Die Baugruppe oder das Modul '....' direkt oder indirekt verwiesen wird, die von den container 'C:\MySolution\Tests\bin\tests.dll' wurde nicht gefunden.

Aber trotzdem, es ist nicht wirklich eine praktikable Lösung, um einen absoluten Pfad anzugeben. Wie kann ich MsTest auf der Kommandozeile mit einer unterschiedlichen, aber relativ assembly base-Verzeichnis?

Meine LocalTestRun.testrunconfig ist wie folgt:

<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="Local Test Run" id="...." xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>This is a default test run configuration for a local test run.</Description>
  <Deployment>
    <DeploymentItem filename="Tests\....\Resources\" />
  </Deployment>
  <Execution hostProcessPlatform="MSIL">
    <TestTypeSpecific>
      <UnitTestRunConfig testTypeId="....">
        <AssemblyResolution applicationBaseDirectory=".\bin">
           <TestDirectory useLoadContext="true" />
        </AssemblyResolution>
      </UnitTestRunConfig>
      <WebTestRunConfiguration testTypeId="....">
        <Browser name="Internet Explorer 7.0">
          <Headers>
            <Header name="User-Agent" value="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" />
            <Header name="Accept" value="*/*" />
            <Header name="Accept-Language" value="{{$IEAcceptLanguage}}" />
            <Header name="Accept-Encoding" value="GZIP" />
          </Headers>
        </Browser>
      </WebTestRunConfiguration>
    </TestTypeSpecific>
    <AgentRule name="LocalMachineDefaultRole">
    </AgentRule>
  </Execution>
</TestSettings>
InformationsquelleAutor Andreas | 2013-07-28
Schreibe einen Kommentar