Zakładając, że oznacza chronioną metodę publicznie dostępnym zajęć:
w kodzie testowym zdefiniować klasę pochodną klasy badanego (bezpośrednio lub z jednym z jej klas pochodnych). Dodaj akcesory dla chronionych elementów lub przeprowadź testy w klasie pochodnej. "Zabezpieczona" kontrola dostępu naprawdę nie jest bardzo przerażająca w C++: nie wymaga żadnej współpracy z klasą bazową, aby "włamać się" do niej. Więc najlepiej, aby nie wprowadzać żadnych „kod testowy” do klasy bazowej, nawet deklaracja znajomego:
// 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);
Czy używasz GenTestAsm-http: //www.codeproject.com/KB/applications/GenTestAsmBase.aspx? Lub jak inaczej działa niezarządzanego kodu C++ z NUNit (.NET)? – RichardOD