c# - 私有单元测试方法?
问题描述
注意:我不是在问如何对私有方法进行单元测试。
我要问的是在单元测试(或本例中的 XUnit)类中拥有私有测试方法的正确方法。让我告诉你我的意思:
public class EndToEndTest
{
private Foo _foo { get; set;}
private Bar _bar { get; set;}
[Fact]
public async Task EndToEnd()
{
await TestFoo();
await TestBar();
await TestFooBar();
}
[Fact]
private async Task TestFoo()
{
_foo = await FooService();
Assert.NotNull(_foo);
}
[Fact]
private async Task TestBar()
{
_bar = await BarService();
Assert.NotNull(_bar );
}
[Fact]
private async Task TestFooBar()
{
var result = FooBarService(_foo, _bar)
Assert.NotNull(result);
}
}
这里的想法是最终测试依赖于前两个,如果单独运行,它将失败。这很好用!但唯一的例外是,当我查看时FooBarService
,VisualStudio 似乎并没有完全将其识别private async Task TestFooBar()
为有效的测试......或类似的东西。
运行公共测试后EndToEnd
,FooBarService 方法显示如下:
这就是我需要的:
其中一个参考是 API,另一个是单元测试。所以VS看到有一个引用服务方法的测试方法,但它不承认该方法已执行。
这样做的正确方法是什么?
解决方案
框架和 VS 要求测试方法是公开的,以便它们被识别。
理想情况下,您的EndToEnd
测试应该是
[Fact]
public async Task EndToEnd() {
//Arrange
Foo _foo = await FooService();
Assert.NotNull(_foo);
Bar _bar = await BarService();
Assert.NotNull(_bar );
//Act
var result = FooBarService(_foo, _bar)
//Assert
Assert.NotNull(result);
}
推荐阅读
- javascript - Jquery 或 JavaScripts 在 html 表中添加计算列
- javascript - 将字符串转换为 mongo 查询格式
- mongodb-query - rxDB 查询数组元素是否存在问题?
- javascript - 来自对象 api 数组的 jQuery 数据表不起作用
- java - 使用 getter 和 setter 将参数传递给类
- javascript - Ant Design Pro 登录问题。看不懂代码
- laravel-5.7 - 调用字符串上的成员函数 getRealPath()"
- c++ - C++ FL Studio SDK如何监听生成器事件
- linux - 内核keepalive会自动触发吗?还是我必须从代码中触发它们?
- android - 如何显示我使用 OnItemClickListener() 的 textview 2nd 布局?