gpt4 book ai didi

c# - 在无法访问其余代码的情况下编写 C# nunit 测试

转载 作者:行者123 更新时间:2023-11-30 15:20:04 25 4
gpt4 key购买 nike

我有一个类 Person 和接口(interface):

interface IService
{
double GetAccDetails(int personId);
}

public class Person
{
private int _personId;
private IService _service;

public Person(int personId, IService service)
{
_personId= personId;
_service = service;
}

public double Amount {get; set;}

public void UpdateBackingAcc()
{
Amount = _service.GetAccDetails(_personId);
}
}

我必须用 nunit 测试来覆盖这段代码,但是我无权访问该服务,只能访问我发布的代码。

所以我的问题是:

  1. 为了编写单元测试,我应该屏蔽它吗?如果是,它总是会返回一些静态值,所以我看不到它有什么好处。

  2. 可以为给定的接口(interface)创建什么样的测试?我假设,其中一个测试可以尝试使用 personId1 并获取一些静态值,然后它可以使用 personId2 并可能获取另一个值,然后检查金额是否为更新与否。因此,如果这是正确的,那么这可能只是 1 个单元测试。

可能检查该值是否为负数是有意义的...也许该值是否为 0...

还有其他想法吗?

最佳答案

您的类 Person 有一个公共(public)构造函数、公共(public) get\set 属性和公共(public)方法。建议是测试类的公共(public)接口(interface)。对于你的类(class),你可以测试:

  1. Ctor,您应该针对 null 验证 IService。改进您的代码以对其进行测试。
  2. 您可以测试您的属性获取和设置
  3. 您可以验证何时调用 UpdateBackingAcc IService 并且该值将保留在 Amount 属性中。

关于c# - 在无法访问其余代码的情况下编写 C# nunit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41189381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com