次のブログ記事を読んで、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.
ブログ投稿の画像によると、これにより、テスト エクスプローラーで 1 つのテストが失敗するはずです。ただし、私の場合、次のようになります。
コードをいじってみましたが、[<Property>]
属性が原因のようです。
ブログ投稿の前のコードの一部を含む次のコードは、上記の属性がアウトコメントされている場合は正常に実行され、2 つの合格テストが生成されますが、それ以外の場合は何も生成されません (上の画像を参照)。
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
- Visual Studio 0.99.7 用の xUnit.net ランナー
アップデート
この例を別のコンピューターで試してみましたが、同じ結果が得られました。ただし、エラーリストに警告が表示されていることに気付きました。これは、最初にこれを試したラップトップにもあることに気付きませんでした。
説明には次のように書かれています。
Found conflicts between different versions of the same dependent assembly.
警告のソースに移動すると、エディターで Microsoft.Common.targets が開き、何千行もの理解できない XML と 101 のさらなる警告が表示されます。
FsCheck パッケージを削除して Microsoft.Common.targets ファイルを閉じると、すべての警告が消えます。この警告は、物事が期待どおりに機能しない理由の手がかりになると思いますが、これを解決する方法はまだわかりません.