5

(かなり長い)バイナリが生成される単体テストをコーディングしています。生成されたバイナリは、生成されると予想されるものと等しいと断言したいと思います。「 rebareunit 」を介してeunitを実行しています。

つまり、このアサーションが失敗すると、出力は「...」で省略されます。完全な出力を確認して、違いがどこにあるかを特定できるようにします。

現在、一時的な解決策として「?debugFmt() 」を使用していますが、それに代わるもの(「 ?_assertEqual() 」に適用できる構成オプションまたは引数)があるかどうかを知りたいので、出力アサーションが失敗した場合にのみ表示されます)。

前もって感謝します!

編集:レゴシアの答えのために、私は複数のアサーションを持つテストジェネレーターを使用したテストサンプルを含めています:

can_do_something(SetupData) ->
    % ... some code ... 
    [?_assertEqual(Expected1, Actual1), ?_assertEqual(Expected2, Actual2)].
4

4 に答える 4

6

コンソールに値を実際に表示するために考えられる最善の方法は、次のようなものです。

Actual =:= Expected orelse ?assert(?debugFmt("~p is not ~p", [Actual, Expected]))

?debugFmtを返しますがok、これは true ではないため、アサーションは常に失敗します。

または、テストジェネレーターとして使用するには、全体を の中に入れることができます?_assert:

?_assert(Actual =:= Expected orelse ?debugFmt("~p is not ~p", [Actual, Expected]))
于 2012-06-15T16:57:37.540 に答える
4

私が通常これを達成する方法は、Eunit 出力 XML ファイル (「Surefire」形式、別名「Junit」形式) を使用することです。XML ファイルは用語の出力深度の制限がはるかに高いため、必要な情報が含まれている可能性があります。

これをあなたに追加してくださいrebar.config

{eunit_opts, 
 [verbose,
  %% eunit truncates output from tests - capture full output in
  %% XML files in .eunit
  {report,{eunit_surefire,[{dir,"."}]}}]}.

foo次に、モジュールの結果を で確認できます.eunit/TEST-foo.xml。ファイルはテキスト エディターで非常に読みやすいと思います。

于 2012-06-15T16:44:34.400 に答える