当前位置 : 主页 > 手机开发 > 其它 >

在F#中编写脚本文件的测试

来源:互联网 收集:自由互联 发布时间:2021-06-22
我有一些脚本文件setup.fsx的功能 我想测试一下. xUnit和类似需要测试的函数是程序集的一部分. 所以我想将我的脚本从setup.fsx重命名为setup.fs扩展名,然后从另一个脚本文件加载它.但后来
我有一些脚本文件setup.fsx的功能
我想测试一下.
xUnit和类似需要测试的函数是程序集的一部分.

所以我想将我的脚本从setup.fsx重命名为setup.fs扩展名,然后从另一个脚本文件加载它.但后来我的脚本依赖于

#r "System.Xml"
#r "System.Xml.Linq"

然后我必须在调用脚本中指定(远离依赖实际出现的位置)

无论如何都要在xUnit worflow中集成基于脚本的测试吗?
建议用什么组织编写脚本文件的测试?

(可能我们需要一个visual studio扩展,用于脚本中的测试而不是汇编…)

即使您只是将fsx脚本添加到Visual Studio,您仍然可以将setup.fsx与其他(可能是fs)文件一起编译到普通项目中,因此您应该能够将脚本保存为Visual Studio中的普通脚本文件,并且同时,从项目或构建测试的命令行工具引用它.

我尝试使用以下test.fsx文件执行此操作:

module Demo
#r "System.Xml.Linq.dll"
open System.Xml.Linq

let test () = 
    let d = XDocument(XElement(XName.Get("foo")))
    d.ToString()

你一定在开头需要一些模块Name声明(这样你就可以从其他文件访问函数),但是它可以是任何fsx文件.我使用的另一个文件是test.fs:

module Main
open Demo    
test() |> printfn "%A"

这仅用于测试,但在这里您可以编写单元测试.如果使用以下命令编译文件,则可以获得可以传递给xUnit的标准程序集(注意,编译器可以从test.fsx中选择#r标记,我们不必显式编写引用):

fsc.exe --target:library test.fsx test.fs

我想你可以在Visual Studio中获得相同的配置,如果添加一个库项目,然后在fsproj文件中使用类似的东西手动添加文件的链接(可以指向解决方案结构中的其他位置的文件):

<Compile Include="..\Eslewhere\In\Your\Project\Tree\File.fsx">
  <Link>File.fsx</Link>
</Compile>

请注意,使用“添加项目”添加fsx文件时,它会标记为“包含”但不会标记为“编译”,因此不会将其编译为项目的一部分.上面应该在项目中包含它,它应该告诉编译器也将它包含在已编译的程序集中.

警告:那说,我认为使用标准单元测试测试刚编译的dll文件可能更好.如果你想测试fsx文件,我会在最后添加几行作为测试并手动运行(select,Alt Enter).原因是fsx文件应该经常更改,因此进行过于严格的测试可能会限制您的灵活性.另一方面,一旦代码变得更加可靠,将其移动到dll文件是有意义的.

网友评论