Le risposte fornite - che questa è una cosa sbagliata da fare e viola ogni principio di buona sperimentazione - sono corrette.
Ma questa è programmazione. Ci sono sempre alcuni razionali ragionevoli anche per la richiesta più strana, e può essere produttivo considerarli.
Supponiamo che tu abbia un codice kernel critico, o parte della tua libreria SSH ad alta sicurezza, che assolutamente, in nessuna circostanza, dovrebbe mai cambiare il suo comportamento, nemmeno per alcuni minuscoli sottoinsiemi di valori infiniti, tutto che non potresti mai testare.
E di avere una società creata in modo tale che ci sia un dipartimento di garanzia della qualità responsabile della scrittura dei test unitari contro il codice fornito dal dipartimento di sviluppo, per assicurarsi che soddisfi i requisiti aziendali.
In questa situazione, ha senso dire "i percorsi critici del codice dovrebbero essere modificati solo da Dev quando QA è stato notificato con signoff dalla gestione superiore ." Qualsiasi modifica senza approvazione e notifica non è intenzionale e potrebbe essere dannosa.
In tal caso, un test che utilizza l'introspezione per ottenere un hash dei contenuti di ciascun metodo e confrontarlo con un hash memorizzato potrebbe essere legittimo. Non è possibile serializzare Method (), ma è possibile suddividere il metodo in serializzazione. Forse un approccio migliore è ottenere un hash del file stesso. O semplicemente confronta il file con un backup sicuro del file.
Ma probabilmente l'approccio migliore se il requisito è quello di fallire in qualsiasi modifica, è quello di verificare i registri del sistema di controllo della versione e vedere se sono state scaricate eventuali modifiche per i file rilevanti. Se sì, allora fallire.