我有一個基本服務類,我的服務通常由繼承,看起來像這樣單元測試基本服務實體框架6
public abstract class BaseService<TEntity>
where TEntity : class, IBaseEntity
{
protected DataContext _context;
protected BaseService(DataContext context)
{
_context = context;
}
public virtual async Task<ICollection<TEntity>> GetAllAsync()
{
return await _context.Set<TEntity>().ToListAsync();
}
public virtual Task<TEntity> GetAsync(long id)
{
return _context.Set<TEntity>().FindAsync(id);
}
public virtual Task<int> AddAsync(TEntity t)
{
if (_context.Entry(t).State == EntityState.Detached)
{
_context.Set<TEntity>().Add(t);
}
_context.Entry(t).State = EntityState.Added;
return _context.SaveChangesAsync();
}
public virtual Task<int> AddAllAsync(ICollection<TEntity> all)
{
foreach (var item in all)
{
if (_context.Entry(item).State == EntityState.Detached)
{
_context.Set<TEntity>().Add(item);
}
_context.Entry(item).State = EntityState.Added;
}
return _context.SaveChangesAsync();
}
public virtual Task<int> UpdateAsync(TEntity updated)
{
_context.Entry(updated).State = EntityState.Modified;
return _context.SaveChangesAsync();
}
public virtual Task<int> DeleteAsync(long key)
{
return DeleteAsync(key, true);
}
public virtual async Task<int> DeleteAsync(long key, bool useFlag)
{
TEntity entity = await GetAsync(key);
return await DeleteAsync(entity, useFlag);
}
public virtual Task<int> DeleteAsync(TEntity t)
{
return DeleteAsync(t, true);
}
public virtual Task<int> DeleteAsync(TEntity t, bool useFlag)
{
// check if the object uses IAuditableEntity
IAuditableEntity auditable = t as IAuditableEntity;
if (useFlag && auditable != null)
{
// flag item as deleted
auditable.IsDeleted = true;
return UpdateAsync(t);
}
else
{
_context.Entry(t).State = EntityState.Deleted;
return _context.SaveChangesAsync();
}
}
}
現在,如果我需要在從繼承的類覆蓋的方法它,我可以做到這一點。
我的問題是這些方法應該在每個從BaseService類繼承的每個類的單元測試中進行測試,還是我應該只測試單元測試我覆蓋的方法並對基本服務進行單元測試?只有這樣,baseService是抽象的,所以爲了測試它,我需要創建一個繼承它的類,以便測試它。
我是新來的單元測試,所以很抱歉,如果這是一個明顯的答案。
明目張膽的自我推銷:我剛剛寫了一篇關於如何爲小型課堂層次做到這一點的博客文章[如何測試一個類層次結構而不重複自己](http://softwareonastring.com/2015/03/15/how -to-測試一個類層次結構,而無需重複的自己動手)。 – 2015-03-15 20:13:15