Tit*_*tan 5 .net c# unit-testing mstest
在编写单元测试时,是否有一种简单的方法可以确保没有意外发生?
由于可能的副作用列表是无限的,添加大量 Assert 以确保每一步都没有任何变化似乎是徒劳的,并且混淆了测试的目的。
我可能错过了一些框架功能或良好实践。
我使用的是 C#7、.net 4.6、MSTest V1。
编辑:更简单的例子是测试视图模型的设置器,应该发生两件事:值应该改变并且应该引发 PropertyChanged 事件。这两件事很容易检查,但现在我需要确保其他属性值没有改变,没有引发其他事件,没有触及系统剪贴板......
确保不会发生任何“坏”或意外情况的选项之一是确保使用依赖项注入和模拟的良好实践:
[Test]
public void TestSomething()
{
// Arrange
var barMock = RhinoMocks.MockRepository.GenerateStrictMock<IBar>();
var foo = new Foo(barMock);
// Act
foo.DoSomething();
// Assert
...
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,如果Foo不小心触及Bar,将导致异常(严格模拟)并且测试失败。这种方法可能不适用于所有测试用例,但可以作为其他潜在实践的良好补充。
| 归档时间: |
|
| 查看次数: |
2305 次 |
| 最近记录: |