Ich habe eine Schwierigkeitseinheit, die meine Klasse testet, die eine Liste von Objekt enthält. HierWie richte ich eine private Variable in einem Komponententest ein
ist, was ich habe
public class A
{
List<B> _list;
public A()
{
_list = new List<B>();
}
public void AddNewB(DateTime time)
{
_list.Add(new B(time));
}
public List<B> GetAllBs()
{
return _list;
}
}
Ich möchte einen Test haben, die beweisen, dass ein neues B Hinzufügen nicht meine Liste nicht löschen. Da die Liste jedoch privat ist, kann ich keine vorhandene Liste erstellen, ohne den Code durchzugehen, den ich testen möchte. Da Klasse A dafür verantwortlich ist, alle neuen Bs zu erstellen und sie zu ihrer Liste hinzuzufügen, und dass alle neuen A's eine leere Liste von Bs haben sollten, fühlt sich das Hinzufügen eines Parameters im Konstruktor seltsam an.
Edit: Ich reparierte GetAllBs, da es ein Copy-Paste-Fehler von AddNewBs war.
Denken Sie daran, dass das Gerät Sie testen die Klasse ist, nicht das Verfahren. Solange sich die öffentliche Schnittstelle der Klasse selbst verhält, sollte es Ihnen egal sein, was sie intern tut. Soweit es Ihre Tests betrifft, existiert '_list' möglicherweise nicht einmal. –
Sie möchten diese http://stackoverflow.com/a/1093481/2096538 lesen. Sie sollten sich nicht um die interne Implementierung der Klasse kümmern, Sie sollten prüfen, ob der extern sichtbare Effekt Ihren Erwartungen entspricht, andernfalls sind Ihre Tests an die interne Implementierung der Klasse gebunden. –
Ich fühlte mich komisch, die Methode zu nennen, die ich testen wollte, um meinen Test einzurichten. –