2013-10-11 165 views
2

我在C#中编写单元测试时有点困惑。我写了下面的课程来学习Moq。我注意到[SetUp]实际上是NUnit的一个参考。我如何编写一个只使用一个框架或另一个框架的测试类,或者这是否可能?如果我想使用Moq,我缺少哪些属性来成功运行此测试?我知道有[TestFixture],[TestMethod]等等,但是我为Moq使用哪一个! 谢谢, 詹姆斯使用moq单元测试框架编写测试

public class CatalogCommandTests 
{ 
    private Mock<IReferenceData> _mockReferenceData; 

    [SetUp] 
    public void TestInitialize() 
    { 
     _mockReferenceData = new Mock<IReferenceData>(); 
    } 

    public void TestMyGetMethodReturnsListOfStrings() 
    { 
     var contractsList = new List<Contract>(); 

     _mockReferenceData.Setup(x => x.MyGetMethod()).Returns(contractsList); 
    } 
} 

回答

3

你的模拟看起来不错。为了获得IReferenceData的模拟,你必须调用_mockReferenceData.Object。

在调用每个测试方法之前,将执行使用SetUp属性修饰的方法。 (参见:Setup)。

如果您希望调用TestMyGetMethodReturnsListOfStrings,则必须使用Test属性 (请参阅:Test)修饰方法。

+2

Btw。当你想使用Moq时,你必须使用2个框架,因为Moq只是一个模拟框架而不是UnitTest框架。 如果你真的只想使用一个框架,你可以使用Nunit.Mocks而不是Moq ...但是Nunit.Mocks是非常有限的(我不会使用它) – musium

+1

好吧,这是我正在寻找的答案。我看到,所以moq是一个嘲讽的框架,而不是一个实际的单元测试编写框架 –

+0

也,我的视窗演示2012年的Windows桌面不允许我运行我的测试。我已将[TestClass]添加到课程中,但它不被识别?我已经添加了NUnit.Framework和Moq作为我的使用.. –