当前位置: 首页 > 知识库问答 >
问题:

如何测试我需要try catch[重复]

齐向笛
2023-03-14
public class StudentPresenter
{
    IView myview;
    Repository myrepo;
    public StudentPresenter(IView vw, Data.Repository rep)
    {
        this.myview = vw;
        this.myrepo = rep;
        this.myview.ButtonClick += myview_ButtonClick;
    }

    public void myview_ButtonClick()
    {
        try
        {
         var d = this.myrepo.GetById(int.Parse(myview.GivenId));
         this.myview.GetStudent(d);
        }
        catch(Exception e)
        {
        }

    }
}
[Test]       
public void Button1Click_NullText_ThrowException()
{
    var mock = Substitute.For<IView>();
    StudentPresenter sp = new StudentPresenter(mock, repo);
    mock.GivenId = string.Empty;
    Assert.Throws<Exception>(()=>sp.myview_ButtonClick());
}


但测试失败..为什么?(因为我的接球盖帽里没有投球)。但我不想扔任何东西,我只想它有能力去接住。那么有没有可能进行测试呢?

共有1个答案

洪凯定
2023-03-14

您不能使用检查代码块是否具有“catch”块的单元测试。唯一的(间接的)方法是测试当给定的通常会导致它抛出的输入时测试不会抛出。

NUnit有一个DoesNotThrow断言,在这里应该很有用。

当然,这并不能保证try/catch的存在,但这是您所能做的最好的。

 类似资料:
  • 我有以下服务方式: 我正试图为此方法创建以下单元测试: 我的问题是: 1.我们需要在单元测试中测试方法吗?如果是这样,我们是否应该为列表创建多条记录,然后将返回的结果与预期的筛选值进行比较? 泛型可译:

  • 令人惊讶的是,很难得到一个关于你是否应该以及何时取消订阅角度观测的直接答案。 我有以下情况: 我看到了一些解决方案: > 将订阅存储为变量,并在Ngondestory中取消订阅 什么都不做,我会帮你把所有的退订资料整理出来 我知道有第三方库,比如,但是假设我们没有任何第三方库,这是建议的退订方法?

  • 在一个SpringBoot应用程序中,我想做一些关于存储库层的测试。 当我尝试从运行测试时,我得到一个关于的错误 com.norc.application中得字段defaultConfigService需要类型为“com.norc.service.defaultConfigService”得bean,但找不到该bean. 那么这需要运行吗? 我尝试在中放入的bean,但这是不允许的。 那该怎么管理

  • 我想写一些代码来处理从web下载时的错误。 这两条语句运行成功。下面,我创建了一个不存在的网址: 不存在。如何编写循环(函数)以便: 当URL错误时,输出为:“web URL错误,无法获取” 当URL错误时,代码不会停止,而是继续下载,直到URL列表结束

  • 我试着去理解Spring是怎么跟所有的事情联系在一起的。然而,我不明白为什么在单元测试spring代码时使用mockito?spring不能处理与mockito相同的DI吗?莫基托贡献了什么是纯泉所不可能做到的? 澄清:我的想法是,我可以使用一个不同的应用程序上下文来进行测试,在这里创建我需要的存根bean作为虚拟对象。

  • 我知道为了使用Appium控制多个设备,我需要启动多个具有不同端口的Appium服务器。但是,当多个设备连接到主机时,我无法获得如何将部分测试目标指向特定设备的信息。 我知道,下面是我需要做的两种配置,以便处理连接到计算机的多个设备。 > 端口设置:如以下webdriver初始化中的4723 desired_caps不同的设备。 所需的_caps_first_设备={'platformName':