Vorrei scrivere una libreria di classi che crea per me un oggetto complesso ma che dovrebbe essere esposta solo il meno possibile. Voglio che sia incluso in altri progetti e lì ho solo una chiamata a questa libreria che, ad es. mi restituisce un oggetto di una classe creata internamente. Non voglio permettere ad altri di creare questi oggetti in modo esplicito, ma voglio comunque creare un progetto di test per questa libreria di classi.Come testare la libreria di classi interna?
Ad esempio:
var result = Manager.Instance.Create(definition)
Questo dovrebbe essere l'unico accesso alla libreria di classi.
In base al parametro di definizione, utilizza diverse sottoclassi per creare l'istanza richiesta e impostare le sue proprietà di conseguenza. Pertanto voglio assicurare in qualche modo con i test che l'intero processo di creazione ha funzionato bene. Ma dato che non voglio nemmeno esporre pochissime proprietà interne dell'oggetto risultato, non posso testare usando solo questo metodo di accesso pubblico dal momento che non ho alcuna proprietà su cui fare affidamento.
So che non si dovrebbe testare per la meccanica interna ed è in genere un cattivo design e stavo anche leggendo attraverso this article, ma non c'è forse un modo per creare una libreria più un progetto di test unitario e magari dopo limitare l'accesso a questa classe? con un involucro o qualcosa del genere?
In quale lingua stai usando? –
Duplicato: http://stackoverflow.com/q/358196/492 –