Was ist der beste Weg, um eine Funktion zu testen, die einen Fehler verursacht? Oder testen Sie eine Funktion, die weitgehend immun gegen Fehler ist?Testen einer Funktion, bei der ein Fehler auftritt
Zum Beispiel; Ich habe eine I/O Completion Port-Klasse, die den Konstruktor auslöst, wenn der Port nicht korrekt initialisiert werden kann. Dies verwendet die Win32-Funktion von CreateIoCompletionPort in der Initialisiererliste. Wenn das Handle nicht richtig eingestellt ist - ein Wert ungleich null -, wird der Konstruktor eine Ausnahme auslösen. Ich habe nie gesehen, dass diese Funktion fehlschlägt.
Ich bin mir ziemlich sicher, dass diese (und andere Funktionen, wie es in meinem Code), wenn sie korrekt verhalten ausfallen, wird der Code 50 Zeilen lang ist weiß-Raum einschließlich, so meine Fragen
a) sind, ist es es lohnt sich zu testen, dass es
b werfen wird und wenn es sich lohnt zu testen, wie?
c) sollten einfache Wrapper-Klassen, wie diese Unit-getestet werden?
Für b) dachte ich über überschreiben CreateIoCompletionPort und übergibt die Werte durch. Im Unit-Test überschreiben Sie ihn und veranlassen ihn, 0 zurückzugeben, wenn ein bestimmter Wert übergeben wird. Da dies jedoch im Konstruktor verwendet wird, muss dieser statisch sein. Scheint dies gültig oder nicht?