我是单元测试的新手。 我正在开发一个带有服务层的MVC项目,我在那里执行所有业务逻辑和访问数据库(通过存储库模式)
我创建了一个项目来对我的业务逻辑进行单元测试,例如:
我想测试的服务层示例逻辑:
public static bool HasPermissionToSomething(MyDomain domain)
{
if((domain.prop1 == true || domain.prop3 == false) && domain.prop2 == false)
return true;
return false;
}
所以我创建了一个像这样的单元测试(使用XUnit)
[Fact]
public void HasPermissionToSomethingTest()
{
var domain = MockDomain();
var hasPermission = MyService.HasPermissionToSomething(domain);
Assert.Equal(hasPermission, true);
}
这是测试我的服务层的好方法吗?我的考试是好的吗?
由于
答案 0 :(得分:1)
你正朝着正确的方向前进。您需要稍微增强单元测试,以便它更多地声明它正在测试的内容。
[Fact]
public void HasPermissionToSomethingTest()
{
var domain = MockDomain {prop1 = true, prop2 = true, prop3=true};
var hasPermission = MyService.HasPermissionToSomething(domain);
Assert.Equal(hasPermission, true);
}
并且,您需要更多的单元测试来涵盖触发真假回报的各种条件。对于这个测试,Xunit的理论将有所帮助,因此您不需要那么多测试。
[Theory, InlineData(true, true, true), InlineData(true, true, false)]
public void ShouldGrantPermission(bool prop1, bool prop2, bool prop3)
{
var domain = MockDomain {prop1 = prop1, prop2 = prop2, prop3 = prop3};
var hasPermission = MyService.HasPermissionToSomething(domain);
Assert.Equal(hasPermission, true);
}