【发布时间】:2013-05-02 16:51:31
【问题描述】:
我有一个 Visual Studio 2012 项目并安装了以下 NuGet 包:
- AutoFixture 使用 Moq 进行自动模拟
- 具有 xUnit.net 数据理论的自动夹具
- 自动夹具
- 起订量
- xUnit.net:扩展
- xUnit.net:跑步者
- xUnit.net
给定以下人为的 Logger 类 (Logger.fs):
namespace FUnit
type public ILoggerContext =
abstract member LogPath :string
type public LoggerContext (logPath :string) =
member val LogPath = logPath with get, set
interface ILoggerContext with
member this.LogPath = this.LogPath
type public Logger () =
member this.Log (context: ILoggerContext) value =
System.String.Format("Logged {0} to {1}.", value, context.LogPath)
以及以下单元测试:
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)
在确保显示所有测试并构建项目后,测试资源管理器无法识别单元测试。项目构建正确,在构建、常规或测试输出日志中没有错误或警告。
如果我用 Fact 属性替换当前的 Theory 和 AutoData 属性,测试就会出现。
F# 测试项目是否支持 AutoFixture? 其他人可以复制这个并知道我做错了什么吗?
【问题讨论】:
-
我认为这与 AutoFixture 无关。更多关于测试资源管理器(顺便说一句,哪个?)无法识别 xUnit.net 测试。
-
是的,很棒的评论。我说的是 Visual Studio 2012 中的测试资源管理器面板。我熟悉作为 TFS 套件一部分的测试资源管理器,但不认为它处理单元测试。
-
如果您尝试在本地 xUnit.net 测试运行器之一(GUI 或命令行)中运行测试会发生什么?
-
FWIW,我已经成功地在 F# 中多次使用了包的精确组合(sans xUnit.net: Runners),所以这绝对是可能的。
标签: unit-testing f# xunit.net autofixture