Supponendo si intende un metodo protetto di una classe accessibile al pubblico:
Nel codice di test, definire una classe derivata della classe in prova (direttamente, o da uno dei suoi classi derivate). Aggiungi accessor per i membri protetti o esegui test all'interno della tua classe derivata. il controllo degli accessi "protetto" non è molto spaventoso in C++: non richiede alcuna cooperazione da parte della classe base per "penetrare" in esso. Quindi è meglio non introdurre alcun "codice di prova" in classe di base, nemmeno un amico dichiarazione:
// 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);
fonte
2009-07-14 23:49:58
Stai usando GenTestAsm-http: //www.codeproject.com/KB/applications/GenTestAsmBase.aspx? O in quale altro modo si sta eseguendo codice C++ non gestito da NUNit (.NET)? – RichardOD