Я пытаюсь понять, как настроить и использовать FsCheck, прочитав следующее сообщение в блоге:
http://www.clear-lines.com/blog/post/FsCheck-2b-XUnit-3d-The-Bomb.aspx
Я изо всех сил старался имитировать весь процесс в посте, и все работает нормально, пока не появится следующий фрагмент кода:
namespace FSharpTests
open Xunit
open FsCheck
open FsCheck.Xunit
open CSharpCode
module Specification =
[<Property>]
let ``square should be positive`` (x:float) =
x * x > 0.
Согласно изображению в сообщении блога, это должно привести к одному провалу теста в обозревателе тестов. Однако в моем случае я получаю следующее:
Я пробовал немного повозиться с кодом, и кажется, что виноват атрибут [<Property>]
.
Следующий фрагмент кода, который содержит часть предыдущего кода из сообщения в блоге, будет работать нормально, если указанный атрибут не закомментирован, производя два проходящих теста, но в противном случае ничего не выдаст (см. Изображение выше).
namespace FSharpTests
open Xunit
open FsCheck
open FsCheck.Xunit
open CSharpCode
module Specification =
[<Fact>]
let ``length above 8 should be valid`` () =
let password = "12345678"
let validator = Validator ()
Assert.True(validator.IsValid(password))
[<Fact>]
let ``length under 8 should not be valid`` () =
let password = "1234567"
let validator = Validator ()
Assert.False(validator.IsValid(password))
//[<Property>]
let ``square should be positive`` (x:float) =
x * x > 0.
Я делаю что-то неправильно? Чего-то не хватает?
Я сейчас бегаю ...
- Visual Studio Ultimate 2012, версия 11.0.61030.00, обновление 4
- F # 3.0 (я думаю ..? Как мне это точно проверить?)
- FsCheck 0.9.4.0
- FsCheck.Xunit 0.4.1.0
- xUnit.net 1.9.2
- xUnit.net runner для Visual Studio 0.99.7
Обновить
Я попробовал этот пример на другом компьютере с теми же результатами. Однако я заметил предупреждение в списке ошибок, которое, как я не заметил, было и на ноутбуке, на котором я впервые это попробовал.
В описании сказано:
Found conflicts between different versions of the same dependent assembly.
Перейдя к источнику предупреждения, в редакторе открывает Microsoft.Common.targets, показывая мне тысячи строк непонятного XML и 101 дальнейшее предупреждение.
Если я удалю пакеты FsCheck и закрою файл Microsoft.Common.targets, все предупреждения исчезнут. Я предполагаю, что это предупреждение может быть ключом к разгадке того, почему что-то работает не так, как ожидалось, но я все еще не знаю, как это решить.
vstest.discovery
* и перехвата исключений? - person Ruben Bartelink   schedule 09.07.2014Add-BindingRedirect
в окне консоли диспетчера пакетов). (И это, вероятно, не применяется в этом случае, но любые такие изменения app.config не могут быть приняты без перезапуска) - person Ruben Bartelink   schedule 09.07.2014