Ho visto molti metodi pazzi per ottenere l'accesso a variabili private durante il test dell'unità. Il più strabiliante che abbia mai visto è #define private public
.Test unitario con -fno-access-control
Tuttavia, non ho mai visto nessuno suggerire di disattivare le variabili private a livello di compilatore. Ho sempre pensato che non potessi. Mi sono lamentato con molti sviluppatori che i test di unità sarebbero stati molto più semplici se potessi dire al compilatore di fare marcia indietro per questo unico file.
Quindi inciampo sull'opzione del compilatore gcc -fno-access-control. È ovviamente il modo perfetto per testare le unità. I tuoi file sorgente originali non sono modificati, nessun amico iniettato solo per il test unitario, nessuna ricompilazione con bizzarre magie del preprocessore. Basta sfiorare l'interruttore 'nessun controllo accessi' durante la compilazione dei test dell'unità.
mi sto perdendo qualcosa? E 'questa l'unità che prova il proiettile d'argento spero che sia?
L'unico svantaggio che vedo è la natura specifica di gcc della tecnica. Tuttavia, suppongo che MSVS abbia una bandiera simile.
Hai provato questa tecnica? Funziona davvero? – UncleZeiv
Ho compilato un semplice test case prima di pubblicare la domanda. Funziona davvero. Non l'ho provato con una vita reale o un progetto di grandi dimensioni, ma presumo che si adatti perfettamente. –
'-fno-access-control' non funziona con ereditarietà privata/protetta. Sono bloccato con '# define's. – Xeverous