2

異なるバージョンの OS で WpfApprovals を使用すると問題が発生しました。私の個人用ラップトップは Windows 7 Enterprise を実行しており、ビルド サーバーは Windows 7 professional を実行しています。WpfApprovals は承認ファイル名に OS 名を使用しているため、ビルド サーバーでテストが失敗しています。

承認名に OS を含めないようにいくつかのオプションを試しましたが、この動作は WpfApprovals.cs でハードコーディングされているようです...

    public static void Verify(Control control)
    {
        ApprovalResults.UniqueForOs();
        ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
    }

... ApprovalResults.UniqueForOs() 呼び出しをコメントアウトするライブラリの修正版を作成する以外に、承認ファイル名に OS 情報を含めることを無効にする方法はありますか?

これらのテストがさまざまなメジャー OS バージョンで失敗することは理解できますが、さまざまなエディションで失敗するべきではありません。標準の文字列ベリファイアが UniqueForOs スタイルの命名を強制していないことに気付きました。

4

1 に答える 1

2

いい視点ね。

一貫性は常に問題になるため、この Wpf は少し注意が必要ですが、特に既定の動作をオーバーライドする方法がないため、これを強制することは最善の方法ではない可能性があります。次のバージョンの正しい解決策を見つけ出す間、ここに 3.0.5 のいくつかの回避策があります

1) ファイル
をコピー 承認されたファイルをコピーして、両方の OS バージョンに一致させることができます。これは少し面倒ですが、コーディングは必要ありません。

2) カスタマイズされた Wpf 呼び出し
あなたはこれをしないと述べましたが、それはかなり簡単な修正です

public static void Verify(Control control)
{
    ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
}

残念ながらこれです。namer をインターセプトする方法はありません。

お知らせいただきありがとうございます。

于 2013-11-19T11:35:51.823 に答える