Unit testing F#UnitTest项目中的AutoFixture未在测试资源管理器中显示单元测试
我已安装Visual Studio 2012项目和以下NuGet软件包:Unit testing F#UnitTest项目中的AutoFixture未在测试资源管理器中显示单元测试,unit-testing,f#,xunit.net,autofixture,Unit Testing,F#,Xunit.net,Autofixture,我已安装Visual Studio 2012项目和以下NuGet软件包: 使用Moq自动模拟的自动夹具 基于xUnit.net数据理论的自动夹具 自动夹具 最小起订量 net:扩展 xUnit.net:跑步者 xUnit.net 给定以下人为记录器类(Logger.fs): 以及以下单元测试: namespace FUnit.Test open FUnit type public Math_Add() = [<Xunit.Extensions.Theory>]
- 使用Moq自动模拟的自动夹具
- 基于xUnit.net数据理论的自动夹具
- 自动夹具
- 最小起订量
- net:扩展
- xUnit.net:跑步者
- xUnit.net
namespace FUnit.Test
open FUnit
type public Math_Add() =
[<Xunit.Extensions.Theory>]
[<Ploeh.AutoFixture.Xunit.AutoData>]
member this.``Should Output Value And Path`` (path :string) =
let context = new LoggerContext(path)
let logger = new Logger()
let expected = System.String.Format("Logged value to {0}.", path)
let actual = logger.Log context "value"
Xunit.Assert.Equal<string>(expected, actual)
namespace FUnit.Test
开玩笑
键入public Math_Add()=
[]
[]
成员this.`Should Output Value And Path`(Path:string)=
let context=new LoggerContext(路径)
让记录器=新记录器()
让expected=System.String.Format(“记录到{0}.”的值,路径)
让实际值=logger.Log上下文“值”
Assert.Equal(预期、实际)
在确保显示所有测试并构建项目后,测试资源管理器无法识别单元测试。项目正确生成,生成、常规或测试输出日志中没有错误或警告
如果我用事实属性替换当前的理论和自动数据属性,测试就会显示出来
在F#测试项目中是否支持AutoFixture?
其他人能复制这一点并知道我做错了什么吗?我认为这是一个问题,因为
Ploeh.Autofixture.Xunit
和测试运行程序使用的Xunit.Extensions
版本存在冲突
如果您使用Xunit的运行程序运行测试,那么您应该会看到一个异常,抱怨无法找到特定版本的Xunit.Extensions
您可以通过将绑定重定向添加到测试项目app.config
来解决此问题。因为您使用的是NuGet,所以您可以让它在测试项目的PackageManager控制台中运行它来生成绑定重定向
Add-BindingRedirect
然后,如果需要,可以在app.config
中调整生成的绑定重定向,使其更加具体
重建项目后,您应该会在VS测试资源管理器中看到测试。我认为这与AutoFixture无关。更多关于测试资源管理器(哪一个,顺便说一下?)不识别xUnit.net测试的信息。是的,评论不错。我说的是VisualStudio2012中的测试浏览器面板。我熟悉作为TFS套件一部分的测试资源管理器,但不认为它处理单元测试。如果您尝试在一个原生xUnit.net测试运行程序(GUI或命令行)中运行测试,会发生什么?FWIW,我在F#中多次成功地使用了包的精确组合(sans xUnit.net:runners),所以这绝对是可能的。谢谢你。你搞定了。
Add-BindingRedirect