2012-03-25 5 views
0

Ich suchte nach Tags "Moles" und "Visual Studio Express", und keine Fragen gefunden. Das bedeutet wahrscheinlich, dass ich die einzige Person bin, die versucht, Express mit Moles zu verwenden :)Wie wird Maulwurf manuell in Visual Studio Express verwendet?

In Express gibt es keine Optionen wie "Add mol Moles Assembly" oder "Add mscorlib".

Ich habe es geschafft, das Tutorial für den DateTime Y2Kbug nach dem manuellen Hinzufügen einiger Referenzen zu bekommen, die normalerweise von VS gehandhabt werden würden. Also, das bedeutet, dass ich irgendeinen der vorgetragenen Sachen in System oder mscorlib moleen kann, was nützlich sein wird.

Mein Problem ist, dass ich nicht scheinen kann, meine eigenen Klassen oder Methoden in der SUT zu mole. Ich glaube nicht, dass der Compiler irgendeine der .moles-Dateien sieht, die die Assemblies zu Mol enthalten.

ich bewiesen dies, indem er versucht Datetime aus dem Y2kbug Tutorial auszuschließen, mit (?):

<MoleGeneration> 
    <Types> 
     <Remove FullName="DateTime!" /> 
    </Types> 
</MoleGeneration> 

Aber der "Bug" wurde wie gewöhnlich behauptet :)

Ist es möglich, nicht zu erzeugen, -system Mole als ich sie brauche, indem etwas mit mir in diesem Forum gesehen: stackoverflow.com/questions/6272217/microsoft-moles-dynamically-instrument

Call Microsoft.Moles.Framework.Moles.MoleRuntime.SetMole(Delegate _stub, object _receiver, MethodInfo method); 

Wenn ich die „SetMole“ Methode verwenden, Bedeutet das, dass ich keine "Assembly" -Dateien brauche, die sowieso nicht zu sehen sind? Wenn ja, wäre es möglich, einige Beispiele für die Verwendung von "SetMole" zu geben. (Ich bin kein Technikfreak.)

Wie von Mike Christian vorgeschlagen, habe ich moles.exe OrigValueP.dll verwendet. Dies erstellt OrigValueP.Moles.dll im Unterordner MolesAssemblies.

Fügen Sie OrigValueP.Moles.dll als Referenz zum Testprojekt hinzu.

OrigValueP.Moles im Objektbrowser anzeigen. Ich sehe jetzt MOrigValue.AllInstances. Das ist ein großer Schritt nach vorne.

Aber ich sehe keine Moles Äquivalent meiner Methode:

public string TestString() { return "Original value"; } 

[Gelöschte Zeilen auf den Befehl beziehen, „moles.exe OrigValueP.Moles.dll“, weil MC schlug ich bin "Versuch, die Maulwurf-Baugruppe zu zerstören"]

Also habe ich eine Frage (die ich weiter versuchen werde, selbst zu beantworten): Warum gab es keine Moled-Methode für TestString()?

Antwort

0

Die Moles-Dokumentation besagt, dass Moles mit Visual Studio 2008 Professional oder Visual Studio 2010 Professional oder besser kompatibel ist. http://research.microsoft.com/en-us/projects/pex/molestutorial.docx

Vergessen Sie nicht, dass die Mole Compiler über die Kommandozeile ausgeführt wird erfordert, dass Sie Kompilierung in der folgenden Reihenfolge ausführen: 1. Ziel Baugruppen 2. Moles (gegen die Zielbaugruppen) 3.Testanordnungen

Das Moles Handbuch enthält die folgende Befehlszeile Befehl:

http://research.microsoft.com/en-us/projects/pex/molesmanual.docx

Codegenerierung Command Line Der Moles Rahmen einer Anwendung Befehlszeile enthält, die den Code, indem Sie die erzeugen kann Anweisungen in .Moles Dateien oder direkt von Baugruppen. Standardmäßig kompiliert das Befehlszeilentool die Stub-Typen und Maulwurf-Typen in eine Assembly und speichert sie in einem MolesAssemblies-Unterordner. Die folgende Liste zeigt Beispiele für typische Verwendung.

Generieren Mol Typen und Stub-Typen für eine bestimmte Baugruppe moles.exe assembly.dll Generieren Mol Typen und Arten Stub aus einer bestehenden Datei .moles moles.exe assembly.moles Gene Mol Typen und Stub Typen unter einem bestimmten Namespace moles.exe Montage DLL/nf: MyNamespace ausführliche Hilfe über die Nutzung von moles.exe moles.exe Hilfe Holen

+0

Danke für die ausführliche Antwort. Ich werde jetzt mit allen Vorschlägen beginnen. Da Express-Benutzer Wege gefunden haben, viele Einschränkungen "manuell" zu umgehen, habe ich mich gefragt, ob es auch möglich ist, Moles manuell zu erzwingen. Denken Sie daran, dass es für Klassen und Methoden "System" und "Mscorlib" funktioniert (was sehr nützlich ist), also versuche ich nur zu sehen, ob ich es zwingen kann, mit vom Benutzer geschriebenem Code zu arbeiten. – OldGrantonian

0

[Diese ganze Antwort wurde der ursprünglichen Frage beigefügt. Sorry für das ganze Durcheinander.]

+0

Ich schlage vor, diesen Inhalt als einen aktualisierten Abschnitt an Ihre ursprüngliche Frage anzufügen. –

+0

Ich nehme an, dass TestString ein Parameter ist, der einen String-Typ zurückgibt. Die von Ihnen gepostete Ausgabe scheint darauf hinzuweisen, dass Sie versuchen, die Maulwurfsgruppe zu zerstören. Normalerweise fügt eine Maulwurf-Assembly ".Moles" an das Ende des .DLL-Dateinamens an. Ich sehe, dass beide ".Moles" in ihnen haben. Der Zweck der Erstellung der ".moles" -Datei im Projekt besteht darin, dem Compiler mitzuteilen, dass er die Moles-Assembly kompiliert. Diese Dateien können das Ergebnis der automatischen Kompilierung sein. –

Verwandte Themen