0

テストデータに非常に大きな文字列を必要とする単体テストがいくつかあります。テスト自体でHTML文字列を宣言したくないのは、実際のテストがわかりにくくなる可能性があるためです。むしろ、テストごとに外部リソースからこれらの文字列をロードしたいと思います。

異なるデータセットで同じテストを実行していませんが、パラメーター化されたテストは実行可能なソリューションのようです。ただし、次の例を機能させるのに問題があります。

注:このコードは、 TestNGの例に基づいています。

package flexUnitTests
{
    import helpers.HTMLDataHelper;

    import org.flexunit.runners.Parameterized;
    import org.hamcrest.assertThat;
    import org.hamcrest.text.containsString;

    [RunWith("org.flexunit.runners.Parameterized")]
    public class SimpleTestCase
    {
        private var parameterized:Parameterized;

        public static var dataLoader:HTMLDataHelper = new HTMLDataHelper("data/layer.html");

        [DataPoint(loader="dataLoader")]
        public static var htmlContent:String;

        [Test(dataprovider="htmlContent", description="Tests something.")]
        public function mustPassThisSimpleTest(htmlContentParam:String):void
        {
            assertThat(htmlContentParam, containsString("head"));
        }
    }
}

このテストを実行すると、次のエラーメッセージが表示されます。

エラー:テストケースのパラメーターの取得中にエラーが発生しました:パラメーター化されたフィールドの値が無効になりますhtmlContent:null

この問題の解決策は何でしょうか?

4

1 に答える 1

0

Theories私が見つけた解決策の1つは、以下に示すように、ランナーを使用してクラスでテストを実行することでした。

package flexUnitTests
{
    import helpers.HTMLDataHelper;

    import org.flexunit.experimental.theories.Theories;
    import org.flexunit.runners.Parameterized;
    import org.hamcrest.assertThat;
    import org.hamcrest.object.equalTo;
    import org.hamcrest.text.containsString;

    [RunWith("org.flexunit.experimental.theories.Theories")]
    public class SimpleTestCase
    {
        public static var dataLoader:HTMLDataHelper = new HTMLDataHelper("data/layer.html");

        [DataPoint(loader="dataLoader")]
        public static var htmlContent:String;

        [Test(dataprovider="htmlContent", description="Tests something.")]
        public function mustPassThisSimpleTest(htmlContentParam:String):void
        {
            assertThat(htmlContentParam, containsString("head"));
        }
    }
}

ただし、副作用として、テストが失敗すると、テストクラス内のすべてのテストに不可解なエラーメッセージが表示されます。例えば、

エラー:mustWorkWithRegularTests

はるかに便利な代わりに

Error: Expected: a string containing "head"
but: was "this is some text"

これは私が抱えていた問題を「解決」しますが、私見では、メッセージの明瞭さのトレードオフは、外​​部ソースからデータをロードできる価値がありません。

于 2012-03-28T12:27:05.670 に答える