gpt4 book ai didi

f# - 在 F# 中为脚本文件编写测试

转载 作者:行者123 更新时间:2023-12-04 21:21:32 27 4
gpt4 key购买 nike

我有一些带有脚本文件 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()

你肯定需要一些 module Name开头的声明(以便您可以从其他文件访问函数),否则它可以是任何 fsx文件。我使用的另一个文件是 test.fs :
module Main
open Demo
test() |> printfn "%A"

这仅用于测试,但您可以在这里编写单元测试。如果您使用以下命令编译文件,您将获得可以传递给 xUnit 的标准程序集(注意,编译器可以从 #r 中选择 test.fsx 标签,我们不必明确写入引用):
fsc.exe --target:library test.fsx test.fs

我认为,如果您添加一个库项目,然后使用 fsproj 中的类似内容手动添加文件链接(可以指向解决方案结构中其他位置的文件),您可以在 Visual Studio 中获得相同的配置。文件:
<Compile Include="..\Eslewhere\In\Your\Project\Tree\File.fsx">
<Link>File.fsx</Link>
</Compile>

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

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

关于f# - 在 F# 中为脚本文件编写测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295249/

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