Ich habe diese CacheManager-Klasse, die ein statisches Wörterbuch mit allen Arten von zwischengespeicherten Daten hält. Da dieses Wörterbuch jedoch statisch ist, wird es mit Daten aus den anderen Komponententests gefüllt. Dies hält mich davon ab, zu testen, ob der CacheManager bei Init leer ist oder nicht, und bricht mit den Prinzipien des Komponententests.Unit Testing CacheManager
Irgendwelche Ideen, wie man einen richtigen Komponententest dafür erstellt?
-Code
public class CacheManager
{
private static readonly Dictionary<ICacheKey, ListCacheItem> cacheEntries =
new Dictionary<ICacheKey, ListCacheItem>();
public static Dictionary<ICacheKey, ListCacheItem> CacheEntries
{
get
{
lock (cacheEntries)
{
return cacheEntries;
}
}
}
Wie ist das besser? Wird der Singleton nicht auch die Werte zwischen den Tests behalten? – koenmetsu
Richtig, der Singleton wird. Aber Sie können den 'CacheManager' selbst instanziieren und seine Mitglieder isoliert testen. In anderen Tests können Sie beispielsweise sicherstellen, dass alle anderen Teile Ihrer App dieselbe Singleton-Instanz verwenden. – dyross
Also wäre Ihre Lösung, eine neue Singleton-Klasse zu erstellen, die eine Instanz des CacheManagers als eines ihrer Mitglieder enthält? – koenmetsu