我想测试一下.
xUnit和类似需要测试的函数是程序集的一部分.
所以我想将我的脚本从setup.fsx重命名为setup.fs扩展名,然后从另一个脚本文件加载它.但后来我的脚本依赖于
#r "System.Xml" #r "System.Xml.Linq"
然后我必须在调用脚本中指定(远离依赖实际出现的位置)
无论如何都要在xUnit worflow中集成基于脚本的测试吗?
建议用什么组织编写脚本文件的测试?
解决方法
我尝试使用以下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文件是有意义的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。