Unit testing 如何为未导出的函数编写单元测试?

Unit testing 如何为未导出的函数编写单元测试?,unit-testing,module,julia,Unit Testing,Module,Julia,我有一个模块,我正在为它编写单元测试,以便与travis.ci一起运行 在我的模块中,我对web服务执行HTTP POST操作 我的一个内部函数validate\u http\u response()是我创建的用于包装web服务调用的函数的一部分,因此我想对其进行测试。但是,由于没有此类导出验证\u http\u响应测试脚本无法“看到”函数,因此我得到错误: validate_http_response not defined 我应该如何构造我的测试,这样我就不必将内部函数复制并粘贴到测试本身

我有一个模块,我正在为它编写单元测试,以便与travis.ci一起运行

在我的模块中,我对web服务执行HTTP POST操作

我的一个内部函数
validate\u http\u response()
是我创建的用于包装web服务调用的函数的一部分,因此我想对其进行测试。但是,由于没有此类
导出验证\u http\u响应
测试脚本无法“看到”函数,因此我得到错误:

validate_http_response not defined
我应该如何构造我的测试,这样我就不必将内部函数复制并粘贴到测试本身中(有一些内部函数)?我希望避免同时维护
src
test
脚本




编辑连同接受的答案,我还发现我可以在测试脚本开始时执行以下操作:
包括(“../src/myfunctions.jl”)
,因为我对
src
中的每个文件都有单独的测试脚本有两种解决方案:

  • 导出函数
  • 创建一个包含HTTP请求验证代码的新模块。将函数移到那里。现在它是官方/公共API的一部分,可以独立测试
  • 第一个解决方案很简单,但会影响API。第二个是干净的,但可能需要做很多工作。

    查看模块上的,以更好地了解名称空间的工作原理。Julia中没有强制可见性,因此您始终可以通过完全限定引用来访问任何模块中导出或未导出的函数


    因此,在您的情况下,如果您的模块名为
    HTTP
    ,您可以说
    HTTP.validate\u HTTP\u response
    ,以访问未报告的函数进行测试。

    完全限定引用绝对是处理此问题的朱利安方法。Works。最后,我发现只做以下操作更容易:
    include(“../src/myfunctions.jl”)
    ,所以我不必一直引用它。。懒惰的打字。