如何使用 matlab.unittest 测试私有方法?

How to test private methods using matlab.unittest?

我目前正在为一个用面向对象的 Matlab 编写的项目实施单元测试。

从设计来看,我无法从我的测试 class 中的测试方法访问 class 的私有方法。

是否有任何解决方法可以直接测试这些方法而不使它们 public?

如果您需要直接测试它们,最简单的方法就是制作它们 public。

另一种方法是让它们受到保护,然后有一个 subclass 和一堆额外的 public 方法调用受保护的方法来测试它们(也许可以有一个对于每个被测试的方法,它们只是将调用直接传递给受保护的方法。

但是,问题的前提有点违背单元测试的想法:你应该测试你的 class 提供的 public interface/contract,这只是它的public 方法。只要 public 方法经过良好测试,任何私有方法都只是实现细节。

另一种看待事物的方式可能是,如果您的方法确实需要测试,则可能值得将其移至自己的方法中 class。