我使用.NET 4,NUnit和Rhino mocks。我想單元測試我的新聞庫,但我不確定如何去做。我的新聞庫是我最終將用來與數據庫進行通信的。我想用它來測試假冒僞造數據。不確定是否有可能?這是我目前有:單元測試庫需要的幫助/建議
public interface INewsRepository
{
IEnumerable<News> FindAll();
}
public class NewsRepository : INewsRepository
{
private readonly INewsRepository newsRepository;
public NewsRepository(INewsRepository newsRepository)
{
this.newsRepository = newsRepository;
}
public IEnumerable<News> FindAll()
{
return null;
}
}
我的單元測試是這樣的:
public class NewsRepositoryTest
{
private INewsRepository newsRepository;
[SetUp]
public void Init()
{
newsRepository = MockRepository.GenerateMock<NewsRepository>();
}
[Test]
public void FindAll_should_return_correct_news()
{
// Arrange
List<News> newsList = new List<News>();
newsList.Add(new News { Id = 1, Title = "Test Title 1" });
newsList.Add(new News { Id = 2, Title = "Test Title 2" });
newsRepository.Stub(r => r.FindAll()).Return(newsList);
// Act
var actual = newsRepository.FindAll();
// Assert
Assert.AreEqual(2, actual.Count());
}
}
在上面的代碼,我不知道我需要模擬。上面的代碼編譯但在NUnit GUI中關於構造器值失敗。我只能假設它與我需要提供給NewsRepository的INewsRepository參數有關。我不知道如何在測試中做到這一點。有人可以糾正我的單元測試,以便它會通過NUnit GUI?某人是否也可以提供一些關於我是否正確實施存儲庫的反饋?
作爲一個新手嘲笑,有什麼我需要驗證?我什麼時候需要驗證?它的目的是什麼?我一直在努力完成一些源代碼項目,一些使用驗證,一些則不使用。
如果上述測試通過,這對開發者證明了什麼?另一個開發人員必須對我的存儲庫做些什麼才能使其在NUnit GUI中失敗?
對不起,所有的問題,但他們是新手問題:)
我希望soomeone能幫助我。
我看到對不對? NewsRepository本身具有相同的功能? – Aliostad 2010-12-09 13:36:29
@Aliostad:你是什麼意思? – 2010-12-09 13:39:15