2

ユニットテストブロックを含むクラスファイルがあります。

class SomeClass {
  // class stuff...
  unittest {
    // unit test stuff...
  }
}

実行してrdmd --main -unittest someclass.dも何も起こりません。念のため、単体テストブロックに失敗したアサーションがあることを確認しましたが、やはり何も起こりません。私は何が欠けていますか?

私はこれらすべてをUbuntuでrdmdビルド20120401を使用して実行しています。

rdmdwithの出力は次の--chattyとおりです。

rdmd -unittest --main --chatty linkedlist.d
'dmd' '-unittest' '-v' '-o-' 'linkedlist.d' '-I.'
'/tmp/.rdmd-1000/home/david/D_Finger_Exercises/linkedlist.d.6374859E23D5272488D4E396AEDC7BE1'

これが私が使用しているファイルへのリンクです:https ://github.com/davidk01/D-Finger-Exercises/

4

5 に答える 5

3

私はあなたのバグを再現することはできません。これが私のテストコードです:

class SomeClass {
  // class stuff...
  unittest {
    import std.stdio;
    writeln("unittested");
  }
}

上記のコードをtest.dというファイルに保存して、次のコマンドを実行しました。

rdmd -unittest --main test.d

そして、stdoutに「unittested」と印刷されました。

フラグに--chattyを追加して、dmdがどのように呼び出されるかを正確に確認することもできます。

于 2012-05-22T15:07:44.190 に答える
2

-debugフラグを指定して実行してみましたか?

于 2012-05-22T14:41:22.860 に答える
2

クラスLinkedListはテンプレート化されています。ブロックは、そのunittestテンプレートのインスタンス化ごとに実行されます。つまり、ゼロ回。

于 2012-08-30T03:07:43.863 に答える
1

ファイルにmain関数がないため、何も実行されません。関数を追加するmainと、期待どおりに単体テストが呼び出されます。

于 2012-05-22T02:28:15.660 に答える
0

引数を並べ替えてみてください。何らかの理由で、少なくとも私にとっては、rdmd-unittest -Iは、rdmd引数(--main)の前にある場合にのみ、dmd引数(など)を確認します。ドキュメントにこれについて非常に簡単に言及されていると思いますが、よくわかりません。

于 2012-05-22T04:28:17.723 に答える