【问题标题】:How to get missing fields to fail?如何让缺失的字段失败?
【发布时间】:2022-09-29 05:08:38
【问题描述】:

我有一些 .rdlc 报告。我正在尝试为他们编写一些测试,并且运行良好。如果我指定的参数不匹配,我将得到失败的测试,并且对于一个报告,如果报告数据集中的字段与我绑定的类型不匹配,我将得到一个异常。

到目前为止,这很好,除了字段异常仅在一个报告中起作用。对于其他报告,缺少字段并且它们不会产生异常;相反,这些值在呈现的报告上只是显示为空。

如何在测试时判断我的数据类型中的字段是否与报告匹配?

    标签: c# rdlc


    【解决方案1】:

    在搜索 RDLC 代码后,我确定字段引用只会在从复杂的“可见性”表达式呈现报表时抛出;缺少的字段不会从文本框中引发错误,包括 Tablix 单元格。

    但是,我确实发现会生成警告。这些警告似乎被发送到调试输出。我没有找到从LocalReport 对象本身查看它们的方法。

    通过拦截调试输出,当缺少字段时,我能够生成有意义的失败测试。我的报告渲染测试看起来像这样:

    // create and setup your LocalReport
    
    // intercept debug writing
    using var writer = new StringWriter();
    using var listener = new TextWriterTraceListener(writer);
    Debug.Listeners.Add(listener);
    
    byte[] bytes;
    try {
       bytes = localReport.Render("PDF");
    } finally {
       Debug.Listeners.Remove(listener);
    }
    
    var warnings = writer.ToString();
    if (warnings != "")
       Assert.Fail(warnings);
    
    Assert.IsNotNull(bytes);
    Assert.IsTrue(bytes.Length > 0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-08
      • 2013-05-10
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      • 2013-12-12
      • 1970-01-01
      相关资源
      最近更新 更多