热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Rust中测试私有方法?

如何解决《如何在Rust中测试私有方法?》经验,为你挑选了1个好方法。

如何在Rust中测试私有方法?我没有找到任何有关它的信息.文档中也没有任何信息.



1> Chris Morgan..:

在使用时#[test],私有或公共方法没有什么特别之处 - 您只需编写可以访问他们可以访问的任何内容的完全正常的函数.

fn private_function() {
}

#[test]
fn test_private_function() {
    private_function()
}

外部测试,例如tests/*.rs,examples/*.rs如果您使用Cargo或doc测试,则无法访问私人成员; 它们也不应该:这些测试旨在成为公共API测试,而不是处理实现细节.


绝对允许外部测试访问私有部分,因为1)您可能需要访问私有部分才能通过公共API可靠地触发所有代码路径.例如,可能存在内部阈值,当达到时会触发不同的代码路径.您可能还需要故障注入或内部详细信息来触发边缘情况.2)访问私有部分可以为测试失败提供更好的诊断 - 您可以将内部信息插入到恐慌消息等...
诊断:这就是std :: fmt :: Debug的用途。对于其他情况,我坚持我的立场,即外部测试不应访问私有详细信息。外部测试不适合您描述的情况,这就是内部单元测试的目的。
在某些情况下,`fmt :: Debug`的粒度过于粗糙-例如,当您只需要特定的位时,您可能不希望打印有关整个庞大数据结构的详细信息。无论如何,内部测试还应该设置公共API的实际用例是否合适?如果没有,那是不会做的,因为我只需要这样做。如果是的话,那么我对所有这些和内部测试感到很高兴,尽管那时区别是毫无意义的?核心问题是,无论您多么努力,实现细节总是会以某种方式影响接口,没有解决之道。
推荐阅读
author-avatar
布丁宝宝-_932
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有