F# 异步单元测试与ms测试
如何在ms单元测试中测试异步方法,从而导致成功或失败的单元测试F# 异步单元测试与ms测试,f#,mstest,F#,Mstest,如何在ms单元测试中测试异步方法,从而导致成功或失败的单元测试 [<TestClass>] type TestRequestDataClass () = [<TestMethod>] member this.TestRequestDataAsync() = async { let! result = requestDataAsync() match result with | Ok result ->
[<TestClass>]
type TestRequestDataClass () =
[<TestMethod>]
member this.TestRequestDataAsync() = async {
let! result = requestDataAsync()
match result with
| Ok result -> Assert.IsTrue(true)
| Error error -> Debug.WriteLine(error)
Assert.IsTrue(false)
}
[]
类型TestRequestDataClass()=
[]
成员:this.TestRequestDataAsync()=异步{
let!result=requestDataAsync()
匹配结果
|确定结果->断言.IsTrue(真)
|错误->调试.写入线(错误)
Assert.IsTrue(false)
}
我没有MS Test来尝试此操作,但是如果您需要生成一个返回非泛型任务
(与泛型任务
)的方法,那么您可以定义以下帮助器:
open System.Threading.Tasks
let startAsActionTask f =
Async.StartAsTask f :> Task
Async.startask
总是创建一个通用的任务
,但除此之外,它与这个助手基本相同。然后可以按如下方式使用辅助对象:
[<TestMethod>]
member this.TestRequestDataAsync() = startAsActionTask <| async {
let! result = requestDataAsync()
match result with
| Ok result -> Assert.IsTrue(true)
| Error error -> Debug.WriteLine(error)
Assert.IsTrue(false)
}
[]
成员this.TestRequestDataAsync()=StartActionTask Assert.IsTrue(true)
|错误->调试.写入线(错误)
Assert.IsTrue(false)
}
我没有MS Test来尝试此操作,但是如果您需要生成一个返回非泛型任务
(与泛型任务
)的方法,那么您可以定义以下帮助器:
open System.Threading.Tasks
let startAsActionTask f =
Async.StartAsTask f :> Task
Async.startask
总是创建一个通用的任务
,但除此之外,它与这个助手基本相同。然后可以按如下方式使用辅助对象:
[<TestMethod>]
member this.TestRequestDataAsync() = startAsActionTask <| async {
let! result = requestDataAsync()
match result with
| Ok result -> Assert.IsTrue(true)
| Error error -> Debug.WriteLine(error)
Assert.IsTrue(false)
}
[]
成员this.TestRequestDataAsync()=StartActionTask Assert.IsTrue(true)
|错误->调试.写入线(错误)
Assert.IsTrue(false)
}
您面临的问题是什么?您已经尝试过解决什么问题了?问题是我在IDE中看不到单元测试,列表消失了,您是否看到语法等方面的任何问题。对于单元测试,单元测试的异步体有问题,它只是从IDEMSTest中消失,需要测试方法返回void
或Task
。函数返回一个Async
,因此MSTest会忽略它。让它返回一个任务
@App2015这就是c#[TestClass]公共类TestRequestDataClass{[TestMethod]公共异步任务TestRequestDataAsync(){…}}中的测试方法的样子
您面临的问题是什么?您已经尝试过解决什么问题了?问题是我在IDE中看不到单元测试,列表消失了,您是否看到语法等方面的任何问题。对于单元测试,单元测试的异步体有问题,它只是从IDEMSTest中消失,需要测试方法返回void
或Task
。函数返回一个Async
,因此MSTest会忽略它。让它返回一个任务
@App2015这是测试方法在c#[TestClass]公共类TestRequestDataClass{[TestMethod]公共异步任务TestRequestDataAsync(){…}}
错误这个表达式应该有类型
unit->unit`但是这里有类型'Async@App2015你说得对!我的助手错了。现在修复了。我尝试了你的方法,错误消失了,但是单元测试没有出现。早些时候我提出了一个解决方案,我删除了异步块并使用了match(requestDataAsync()|>async.RunSynchronously)使用
,我可以看到列表中出现了单元测试。我偶然看到了你的文章,它帮助我走上了这条道路。错误此表达式应具有类型
unit->unit`但此处具有类型'Async@App2015你说得对!我的助手错了。现在修复了。我尝试了你的方法,错误消失了,但是单元测试没有出现。早些时候我提出了一个解决方案,我删除了异步块,并使用了match(requestDataAsync()|>async.RunSynchronously)和,我可以看到单元测试出现在列表中。我看到了你的文章,它帮助我走上了这条道路。