Vorausgesetzt, dass Sie eine geschützte Methode einer öffentlich zugänglichen Klasse bedeuten:
Im Testcode definieren eine abgeleitete Klasse der Klasse unter Test (entweder direkt, oder aus einem ihrer abgeleiteten Klassen). Fügen Sie Zugriffsmethoden für die geschützten Member hinzu oder führen Sie Tests in Ihrer abgeleiteten Klasse durch. "Geschützte" Zugriffskontrolle ist in C++ wirklich nicht sehr beängstigend: Es bedarf keiner Kooperation von der Basisklasse, um "hineinzukriechen". So ist es am besten nicht „Testcode“ in die Basisklasse einzuführen, nicht einmal ein Freund Erklärung:
// in realclass.h
class RealClass {
protected:
int foo(int a) { return a+1; }
};
// in test code
#include "realclass.h"
class Test : public RealClass {
public:
int wrapfoo(int a) { return foo(a); }
void testfoo(int input, int expected) {
assert(foo(input) == expected);
}
};
Test blah;
assert(blah.wrapfoo(1) == 2);
blah.testfoo(E_TO_THE_I_PI, 0);
Verwenden Sie GenTestAsm-http: //www.codeproject.com/KB/applications/GenTestAsmBase.aspx? Oder wie sonst laufen Sie nicht verwalteten C++ - Code von NUNit (.NET)? – RichardOD