Tôi có lớp CacheManager này giữ một từ điển tĩnh với tất cả các loại dữ liệu được lưu trong bộ nhớ cache. Tuy nhiên, với từ điển này là tĩnh nó được lấp đầy với dữ liệu từ các bài kiểm tra đơn vị khác. Điều này giúp tôi kiểm tra đơn vị liệu CacheManager có trống trên init hay không và phá vỡ nguyên tắc kiểm thử đơn vị.Kiểm tra đơn vị CacheManager
Bất kỳ ý tưởng nào về cách tạo thử nghiệm đơn vị thích hợp cho điều này?
Mã
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;
}
}
}
Làm cách nào tốt hơn? Không phải singleton cũng giữ giá trị giữa các bài kiểm tra? – koenmetsu
Đúng, Singleton sẽ. Nhưng bạn có thể tự khởi tạo 'CacheManager' và kiểm tra các thành viên của nó trong sự cô lập. Sau đó, trong các thử nghiệm khác, ví dụ, bạn có thể chắc chắn rằng tất cả các phần khác của ứng dụng của bạn đang sử dụng cùng một cá thể Singleton. – dyross
Vì vậy, thực sự giải pháp của bạn sẽ là tạo ra một lớp Singleton mới có chứa một thể hiện của CacheManager là một trong những thành viên của nó? – koenmetsu