ale*_*exn 4 .net c# tdd unit-testing mocking
我正在努力掌握测试驱动的开发,我想知道这些单元测试是否合适.我有一个看起来像这样的界面:
public interface IEntryRepository
{
IEnumerable<Entry> FetchAll();
Entry Fetch(int id);
void Add(Entry entry);
void Delete(Entry entry);
}
Run Code Online (Sandbox Code Playgroud)
然后这个实现该接口的类:
public class EntryRepository : IEntryRepository
{
public List<Entry> Entries {get; set; }
public EntryRepository()
{
Entries = new List<Entry>();
}
public IEnumerable<Entry> FetchAll()
{
throw new NotImplementedException();
}
public Entry Fetch(int id)
{
return Entries.SingleOrDefault(e => e.ID == id);
}
public void Add(Entry entry)
{
Entries.Add(entry);
}
public void Delete(Entry entry)
{
Entries.Remove(entry);
}
}
Run Code Online (Sandbox Code Playgroud)
Theese是我到目前为止所写的单元测试,它们是好还是我应该做些不同的事情?我应该嘲笑EntryRepository吗?
[TestClass]
public class EntryRepositoryTests
{
private EntryRepository rep;
public EntryRepositoryTests()
{
rep = new EntryRepository();
}
[TestMethod]
public void TestAddEntry()
{
Entry e = new Entry { ID = 1, Date = DateTime.Now, Task = "Testing" };
rep.Add(e);
Assert.AreEqual(1, rep.Entries.Count, "Add entry failed");
}
[TestMethod]
public void TestRemoveEntry()
{
Entry e = new Entry { ID = 1, Date = DateTime.Now, Task = "Testing" };
rep.Add(e);
rep.Delete(e);
Assert.AreEqual(null, rep.Entries.SingleOrDefault(i => i.ID == 1), "Delete entry failed");
}
[TestMethod]
public void TestFetchEntry()
{
Entry e = new Entry { ID = 2, Date = DateTime.Now, Task = "Testing" };
rep.Add(e);
Assert.AreEqual(2, rep.Fetch(2).ID, "Fetch entry failed");
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
就在我的头顶......
虽然你对add的测试真的只测试框架:
同样与你的获取:
在实用单元测试一书中有一个很好的清单(好书,强烈推荐)
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |