1

MSpec または別の BDD/TDD フレームワークを使用して、.net マイクロ フレームワークを対象としたコードをテストできるようにしたいと考えています。残念ながら、非 MF アセンブリから MF (マイクロフレームワーク) アセンブリを参照することはできません。これは単なる C# コードであり、このシナリオでは単体テストが非常に役立つため、残念です。.net マイクロ フレームワーク プロジェクトの単体テスト (できれば MSpec を使用) を行う方法を考え出した人はいますか?

4

2 に答える 2

2

最新の Machine.Specifications をダウンロードし、すべてのコードを Micro Framework Class Library プロジェクトに移動しました。323 のコンパイル エラーしかありませんでした。変更する必要があるものの短いリスト...

  1. 拡張メソッドなし
  2. ジェネリックなし
  3. リンクなし
  4. カスタム属性なし
  5. 式ツリーなし

この .NET Framework ファミリで MSpec を再構築する価値はありますか? おそらくそうではありません。作成者/コミッターが追いつきたいと思うものはありますか? おそらくそうではありません。


この間抜けなフォーラム スレッドに基づいて、プロジェクト タイプの GUID と CSharp のインポートをカスタマイズしようとしましたが、多くのエラーが発生しました。「コンパイラエラーでサポートされていません」を含みます。

エラー 4 TestableMicroLibrary.Tests D:\TestableMicroLibrary\TestableMicroLibrary.Tests\MMP 0x81010009


自分で巻く必要があると思います。テストクラス/メソッドには、規則とリフレクション (残りの唯一のもの) を使用します。フィクスチャごとのテスト ケース クラスなど、ビヘイビア ドリブン スタイルを引き続き使用できます。

public class When_doing_something_neat
{
    public void It_should_frob_the_widget() 
    {
        Assert.IsTrue(_widget.IsFrobbed);
    }
}

そして、Assert/Should ライブラリ全体を再構築します (拡張メソッドがないことを思い出してください!)。

public static class Assert
{
    public static void IsTrue(bool thing)
    {
        if(!thing) throw new AssertionException("It is not true");
    }
}
于 2011-10-24T21:40:21.843 に答える
0

もう 1 つのオプション (少し面倒で、適していない可能性があります) は、ダミーの 'Normal' .Net3.5/.Net4.0 プロジェクトをマイクロフレームワーク プロジェクトと一緒に作成することです。マイクロフレームワーク C# はほぼすべてのソース互換性があるため、ソース ファイルをダミー プロジェクトに追加することもできます。つまり、ソース ファイルは両方のプロジェクトに属します。次に、たとえば Microsoft.Spot 名前空間のインクルードの周りなど、#IFDEFS を使用した最小限の条件付きコンパイルが必要になります。

その時点で、ダミー プロジェクトは通常のテスト フレームワーク NUinit、Specflow などを使用して完全にテストできます。明らかに、このアプローチにはある程度の注意と注意が必要です。ホストのバイト順の問題などに注意してください。もちろん、両方のプロジェクトを並行して維持する必要があります。

もう 1 つのオプションは、エミュレーター プロジェクトを介してテストすることです。これは、より徹底的なアプローチです。ただし、ダミープロジェクトのアプローチは、WRT の迅速な開発、TDD などに確実にメリットをもたらす可能性があります。

于 2011-11-10T09:09:59.587 に答える