Laden...

NUnit Verständnisproblem - Zugriffsrechte

Erstellt von bernett vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.176 Views
B
bernett Themenstarter:in
53 Beiträge seit 2006
vor 15 Jahren
NUnit Verständnisproblem - Zugriffsrechte

Guten Morgen,

ich habe mich nun etwas in NUnit eingearbeitet und stehe vor einem kleinen Problem. Meine Tests funktionieren soweit in einem Testprojekt, jedoch ist mein Problem, dass ich meine Zugriffsberechtigungen für mein aktuelles Projekt über den Haufen werfen müsste. Ich kann ja z. B. "internal" Methoden nicht aus dem Testrpojekt aufrufen.

Alternative hierfür wäre, ich schreibe für jedes Teilprojekt meiner Solution eine extra "UnitTestWrapper"-Klasse, in welcher ich die Testlogik verberge und diese Methoden rufe ich dann aus der NUnit-Klasse ([TestFixture]) auf.

Oder übersehe ich hier etwas.

Mit freundlichen Grüßen,
bernett

S
417 Beiträge seit 2008
vor 15 Jahren

Hi,

also ich hab dafür immer das InternalsVisibleTo-Attribute in der zu testenden Assembly entsprechend gesetzt.
Das heisst, dass du hier definierst, welche anderen Assemblies Zugriff auf die internal-Klassen bzw. Methoden haben.

z.b. schreibst du in deine zu testende Assembly: (z.b. in das AssemblyInfo File)


[assembly:InternalsVisibleTo("NameDeinerUnitTestAssembly")]

B
bernett Themenstarter:in
53 Beiträge seit 2006
vor 15 Jahren

Hallo,

danke für den Hinweis. Ich habe das auch ausprobiert, jedoch sagt mir VS immer, dass der Attributpfad "assembly" nicht gültig ist und ich nur type verwenden kann. Für type existiert jedoch kein "InternalsVisibleTo". Liegt das Problem eventuell an den .Net versionen? Ich benutze momentan 3.5 zusammen mit VS2008.

Mit freundlichen Grüßen,
bernett

F
10.010 Beiträge seit 2004
vor 15 Jahren

Das ist jetzt aber wieder so eine Philisophie Frage.

Unittests sollen eigentlich die Programmierschnittstelle testen, und sicherstellen, das
diese auch nach Refaktorierungen oder Ergänzungen einwandfrei funktionieren.

Ausserdem sollte man ja sowieso gegen Interfaces programmieren/Testen,
und deshalb stellt sich ja diese Frage/Aufgabe eigentlich licht.

Aber es entstehen da jedesmal Glaubenskriege zu diesem Thema.

B
bernett Themenstarter:in
53 Beiträge seit 2006
vor 15 Jahren

Das hatte ich mir auch schon überlegt. Jedoch würde es dann bei mir so aussehen, dass ich z. B. bei meiner Schnittstelle von der View zum Controller ansetze und dann alles was danach kommt auch ausgeführt wird. Ich müsste also dann für jeden einzelnen Testcase auch wieder Daten (über Webservices) in die Datenbank des 2. Programmes schreiben (Durchlauf des kompletten Models). Das finde ich für Unittests jetzt auch nicht so schön. Ich werde zwar auch hierfür Testfälle schreiben, jedoch ist das ja nicht beim Überprüfen von Properties jedes mal notwendig in meinen Augen.

Ich habe es jetzt wie beschrieben über eine "UnitTestWrapper.cs" Klasse gelöst, die eben jedes Projekt besitzt. Diese enthält meine Testlogik und wird von einer für jedes Projekt separaten NUnit-Datei aufgerufen. Ich finde die Lösung garnicht so schlecht, da ich dann auch Unittests schön über Code vorher durchlaufen und debuggen kann.

Danke,
bernett

F
10.010 Beiträge seit 2004
vor 15 Jahren

Für bessere Tests mit Datenbanken benutze ich NDBUnit.
Ist in Zusammenarbeit mit ner kleinen zusatzLib ( aus dem Summer of NHibernate )
einfach zu realisieren.

http://www.summerofnhibernate.com/

Da kannst Du das Setup in dem 4. Video ( also in Session 3 ) sehen.