問題タブ [assertions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Debug.Assertと例外スロー
アサーションをいつどのように使用するかについて、たくさんの記事(およびStackOverflowに投稿された他のいくつかの同様の質問)を読み、それらをよく理解しました。Debug.Assert
しかし、それでも、単純な例外をスローする代わりに、どのような動機が私を使用するように駆り立てるべきかはわかりません。つまり、.NETでは、失敗したアサーションに対するデフォルトの応答は、「ワールドを停止」してユーザーにメッセージボックスを表示することです。この種の動作は変更できますが、それを行うのは非常に面倒で冗長であることがわかります。代わりに、適切な例外をスローすることもできます。このようにして、例外をスローする直前にアプリケーションのログにエラーを簡単に書き込むことができます。さらに、アプリケーションが必ずしもフリーズするわけではありません。
Debug.Assert
では、単純な例外の代わりに使用する必要があるのはなぜですか?あるべきではない場所にアサーションを配置すると、あらゆる種類の「望ましくない動作」が発生する可能性があるため、私の観点では、例外をスローする代わりにアサーションを使用しても実際には何も得られません。あなたは私に同意しますか、それとも私はここで何かが欠けていますか?
注:「理論上」の違い(デバッグとリリース、使用パターンなど)は完全に理解していますが、私が見ているように、アサートを実行するのではなく、例外をスローする方がよいでしょう。プロダクションリリースでバグが発見された場合でも、「アサーション」を失敗させたいので(結局のところ、「オーバーヘッド」は途方もなく小さい)、代わりに例外をスローする方がよいでしょう。
編集:私が見ているように、アサーションが失敗した場合、それはアプリケーションがある種の破損した予期しない状態に入ったことを意味します。では、なぜ実行を継続したいのでしょうか。アプリケーションがデバッグバージョンで実行されているかリリースバージョンで実行されているかは関係ありません。同じことが両方に当てはまります
ruby-on-rails - RubyonRailsでの関係における子の数の違いをアサートします
私のコントローラーは子book_loanを作成できます。機能テストでこの動作をテストしようとしていますが、assert_differenceメソッドを使用するのに苦労しています。運が悪かったので、book_loansのカウントをassert_differenceに渡すいくつかの方法を試しました。
BookLoanを文字列に変換できません
NoMethodError:未定義のメソッド'book_loans' for#
Procを文字列に変換できません
mocking - rspecモック:「すべき」方法での期待を検証しますか?
rspecのモックを使用して、「should」メソッドで検証できる期待値を設定しようとしています...しかし、これを行う方法がわかりません...モックで.should_receiveメソッドを呼び出すと、 before:allメソッドが終了するとすぐに、予期される呼び出しを検証します。
ここに小さな例があります:
'it "should"'メソッドで予期される呼び出しを確認するにはどうすればよいですか?rspecの代わりにmochaまたは別のモックフレームワークを使用する必要がありますか?また ???
debugging - デバッグにおける assert.h の適切な使用
c++ と Visual Studio 2008
assert.h の assert() を使用してデバッグ モードでコンパイルすると、アサート条件が満たされない場合にアプリケーションがクラッシュし、これが発生したファイルの行にコンソールに表示されます。これは非常に便利ですが、条件が満たされない場合は、代わりにこの位置でデバッガーにトラップすることをお勧めします
どうやってやるの?ありがとう!
c++ - C++アプリケーション用のSMARTASSERT?
失敗したアサーションをユーザーに表示する必要性と、開発者が問題をデバッグするのに十分な情報を含む新しいマクロを定義するのは良いことですか。
ユーザーへのメッセージ、開発者のための最後の情報でユーザーがこのメッセージで何をすべきか
使用するサンプルメッセージfn、
assertions - CxxTestでカスタムアサーションを記述できますか?
CxxTestを使い始めたばかりで、std::vectorが正しくソートされているかどうかをテストしたいと思います。これまでの私のテストは次のとおりです。
明らかに、CxxTestはアサーションを提供しませんTS_ASSERT_SORTED
が、カスタムアサーションを作成する方法はありますか?それは私がこれを行うことを可能にするでしょう:
このように記述されていると、テストの意図を確認するのが非常に簡単になります。
CxxTestユーザーガイドを調べましたが、このようなカスタムアサーションを記述できるかどうかわかりませんでした。別の方法として、クラスIsSortedを作成し、そのを実装することもできますoperator()
。次に、次のようなテストを作成できます。
これが正しいアプローチだと思います。ただし、これを行う場合はclass IsSorted
、テストスイートとは別に、の定義を独自のヘッダーファイルに配置する必要がありますか?特にこのフレームワークでは、単体テストに関連するベストプラクティスを理解しようとしています。
setUp()
最後の質問:メソッドまたはテスト自体でベクトルを並べ替える必要がありますか?
java - JUnit: テスト中のクラスでアサーションを有効にする
assert
JUnit の JVM インスタンスではアサーションが有効になっていないため、JUnit テスト スイートでは失敗しなかった Java ステートメントに何度か悩まされました。明確にするために、これらは実装内の「ブラックボックス」アサーション (不変条件のチェックなど) であり、JUnit テスト自体によって定義されたアサーションではありません。もちろん、テスト スイートでそのようなアサーションの失敗をキャッチしたいと思います。
明らかな解決策は、 JUnit を実行するときは常に慎重に使用する-enableassertions
ことですが、より堅牢な解決策を希望します。1 つの代替方法は、すべてのテスト クラスに次のテストを追加することです。
これを達成するためのより自動的な方法はありますか?JUnit に対するシステム全体の構成オプション? メソッドに入れることができる動的呼び出しsetUp()
?
visual-c++ - アサーション エラーが発生するのはなぜですか?
2 より大きい入力でアサーション エラーが発生するのはなぜですか? これは、配列の添字が各項のべき乗であり、array[subscript] の要素が係数である多項式プログラムの前身です。
java - Netbeans でアサーションを有効にする
私は何かをしたい
どうすればいいですか?