无法在Visual Studio中运行测试

时间:2015-09-08 13:11:06

标签: visual-studio testing f# functional-testing

我创建了一个包含2个项目的解决方案,FSharpCalled(包含方法" disBonjour",在另一个中转换字符串),F#库和FSharpTest,如下所示:

enter image description here

这里有FSharpCalled:

here

问题在于我无法进行测试;如第一个屏幕截图所示,我收到一条错误消息,指出"主模块为空,因此执行时不会发生任何事情"。

我试图修改一些属性但没有成功。

编辑:

这是结果......该死的!

enter image description here

2 个答案:

答案 0 :(得分:3)

当您在中使用let绑定时,let绑定是私有的(即不可公开访问)。因此,您不能将其用作测试方法。

如果您想将NUnit与F#中的类一起使用,则必须使用[<Test>]属性来装饰方法

[<TestFixture>]
type TestClass() = 
    [<Test>]
    member this.SomeTest () =
        // Test goes here
        ()

上次我使用NUnit时,你还 [<TestFixture>]属性添加到类本身,所以我也添加了它。通常,我不使用NUnit,所以我不知道它是否仍然需要。

模块

您也可以在模块中编写测试,在这种情况下,您可以使用let属性来装饰[<Test>]绑定函数,因为在这种情况下它会编译为public,static member:

module MyTests =
    [<Test>]
    let ``a function in a module that works as a test`` () =
        // Test goes here
        ()

至少,我使用的测试运行器(TestDriven.net)也发现并运行该测试。我不知道所有其他测试跑步者是否也会这样做。

有关使用F#进行单元测试的一般介绍,还有更多内容,您可以考虑观看我的Pluralsight course called Unit Testing with F#

答案 1 :(得分:1)

  

主模块为空,因此执行时不会发生任何事情

如果您的控制台项目没有[<EntryPoint>],则会发生

。因此,您需要声明这样的主方法或将项目更改为库项目。

更新

您是否使用任何第三方测试运行器(TestDriven,带有nUnit集成的ReSharper,...)或nUnit VS Test Adapter? VS无法识别开箱即用的nUnit测试。