我应该在每个TestMethod或ClassInitialize内部设置模拟方法吗?

Sar*_*ana 2 c# unit-testing moq

我正在使用VS Unit和Moq进行单元测试,我无法弄清楚我的模拟设置的正确位置.

目前我正在设置这样的模拟:

[TestMethod]
public void SomeTestMethod()
{
    // Arrange: ...
    mockRepository.Setup(repo => repo.SomeRepoMethod()).Returns(someMockData);

    // Act: ...   
    // Assert: ...            
}
Run Code Online (Sandbox Code Playgroud)

我发现每个测试方法中的模拟方法使我的代码更少DRY,因为我必须复制粘贴到任何需要模拟实现的测试方法SomeRepoMethod.

这是常态还是应该将我的设置移动到像这样的常见位置ClassInitialize

Joh*_*ner 6

我的经验法则是,如果在类中的每个测试中使用模拟,那么我将在其中进行设置ClassInitialize.如果只有一些人使用它,那么我将在类中创建一个非测试方法,然后从任何需要模拟对象的测试中调用它.