gpt4 book ai didi

matlab - 如何使内部/辅助函数可测试?

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:31 25 4
gpt4 key购买 nike

假设我有一些函数 Foo,它使用两个内部辅助函数 barbaz

有没有一种方法可以组织代码,使 barbaz 保持“看不见”,但同时可以进行单元测试? (barbaz 的单元测试最好与主函数 Foo 的单元测试在同一个套件中。)

最佳答案

有几个选项可以实现这一点。

首先,Foo 需要是一个函数吗?如果它是一个类,那么您可以将 barbaz 实现为 HiddenAccess='protected' 这是锁得很紧。然后你可以创建一个测试特定的子类,访问 barbaz 进行测试。您也可以scope the access如果需要,可以进一步锁定测试以防止其他人查看。

如果您确实希望 Foo 成为一个函数,那么您还有其他选择。其中之一是以某种方式获取测试的私有(private)本地函数的函数句柄。您可以通过 Foo 的一些特殊调用语法来完成此操作,这些语法在调用时将这些函数返回给测试。然而,这以一种可能令人困惑的方式修改了生产代码,并且它本质上是将测试逻辑插入到生产中。我更喜欢通过将它们放入一个包中来隐藏这些函数,这样它们就不会在全局命名空间中。包的名称可以表明它们是不受限制的,而不是您支持的界面的一部分。

最后,一种选择是简单地使用公共(public)接口(interface)来测试这些功能。显然,在某些情况下,它们是从函数中调用的。您可能需要考虑通过界面的前门编写测试。这样做的一个好处是您可以轻松更改本地函数结构的实现,而无需修改测试。私有(private)函数是私有(private)的,因为根据定义它们是您实现的一部分,而不是您的接口(interface)。如果您发现它复杂到需要独立于 Foo 接口(interface)的独立测试,那么它可能应该如上所述被分解为另一个包函数或类,以便对其进行单元测试。

关于matlab - 如何使内部/辅助函数可测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25313017/

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