問題タブ [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.

0 投票する
8 に答える
19296 参照

c# - Debug.Assertと例外スロー

アサーションをいつどのように使用するかについて、たくさんの記事(およびStackOverflowに投稿された他のいくつかの同様の質問)を読み、それらをよく理解しました。Debug.Assertしかし、それでも、単純な例外をスローする代わりに、どのような動機が私を使用するように駆り立てるべきかはわかりません。つまり、.NETでは、失敗したアサーションに対するデフォルトの応答は、「ワールドを停止」してユーザーにメッセージボックスを表示することです。この種の動作は変更できますが、それを行うのは非常に面倒で冗長であることがわかります。代わりに、適切な例外をスローすることもできます。このようにして、例外をスローする直前にアプリケーションのログにエラーを簡単に書き込むことができます。さらに、アプリケーションが必ずしもフリーズするわけではありません。

Debug.Assertでは、単純な例外の代わりに使用する必要があるのはなぜですか?あるべきではない場所にアサーションを配置すると、あらゆる種類の「望ましくない動作」が発生する可能性があるため、私の観点では、例外をスローする代わりにアサーションを使用しても実際には何も得られません。あなたは私に同意しますか、それとも私はここで何かが欠けていますか?

注:「理論上」の違い(デバッグとリリース、使用パターンなど)は完全に理解していますが、私が見ているように、アサートを実行するのではなく、例外をスローする方がよいでしょう。プロダクションリリースでバグが発見された場合でも、「アサーション」を失敗させたいので(結局のところ、「オーバーヘッド」は途方もなく小さい)、代わりに例外をスローする方がよいでしょう。


編集:私が見ているように、アサーションが失敗した場合、それはアプリケーションがある種の破損した予期しない状態に入ったことを意味します。では、なぜ実行を継続したいのでしょうか。アプリケーションがデバッグバージョンで実行されているかリリースバージョンで実行されているかは関係ありません。同じことが両方に当てはまります

0 投票する
2 に答える
1725 参照

ruby-on-rails - RubyonRailsでの関係における子の数の違いをアサートします

私のコントローラーは子book_loanを作成できます。機能テストでこの動作をテストしようとしていますが、assert_differenceメソッドを使用するのに苦労しています。運が悪かったので、book_loansのカウントをassert_differenceに渡すいくつかの方法を試しました。

BookLoanを文字列に変換できません

NoMethodError:未定義のメソッド'book_loans' for#

Procを文字列に変換できません

0 投票する
5 に答える
4566 参照

mocking - rspecモック:「すべき」方法での期待を検証しますか?

rspecのモックを使用して、「should」メソッドで検証できる期待値を設定しようとしています...しかし、これを行う方法がわかりません...モックで.should_receiveメソッドを呼び出すと、 before:allメソッドが終了するとすぐに、予期される呼び出しを検証します。

ここに小さな例があります:

'it "should"'メソッドで予期される呼び出しを確認するにはどうすればよいですか?rspecの代わりにmochaまたは別のモックフレームワークを使用する必要がありますか?また ???

0 投票する
1 に答える
350 参照

debugging - デバッグにおける assert.h の適切な使用

c++ と Visual Studio 2008

assert.h の assert() を使用してデバッグ モードでコンパイルすると、アサート条件が満たされない場合にアプリケーションがクラッシュし、これが発生したファイルの行にコンソールに表示されます。これは非常に便利ですが、条件が満たされない場合は、代わりにこの位置でデバッガーにトラップすることをお勧めします

どうやってやるの?ありがとう!

0 投票する
5 に答える
1311 参照

c++ - C++アプリケーション用のSMARTASSERT?

失敗したアサーションをユーザーに表示する必要性と、開発者が問題をデバッグするのに十分な情報を含む新しいマクロを定義するのは良いことですか。

ユーザーへのメッセージ、開発者のための最後の情報でユーザーがこのメッセージで何をすべきか

使用するサンプルメッセージfn、

0 投票する
3 に答える
455 参照

assertions - CxxTestでカスタムアサーションを記述できますか?

CxxTestを使い始めたばかりで、std::vectorが正しくソートされているかどうかをテストしたいと思います。これまでの私のテストは次のとおりです。

明らかに、CxxTestはアサーションを提供しませんTS_ASSERT_SORTEDが、カスタムアサーションを作成する方法はありますか?それは私がこれを行うことを可能にするでしょう:

このように記述されていると、テストの意図を確認するのが非常に簡単になります。

CxxTestユーザーガイドを調べましたが、このようなカスタムアサーションを記述できるかどうかわかりませんでした。別の方法として、クラスIsSortedを作成し、そのを実装することもできますoperator()。次に、次のようなテストを作成できます。

これが正しいアプローチだと思います。ただし、これを行う場合はclass IsSorted、テストスイートとは別に、の定義を独自のヘッダーファイルに配置する必要がありますか?特にこのフレームワークでは、単体テストに関連するベストプラクティスを理解しようとしています。

setUp()最後の質問:メソッドまたはテスト自体でベクトルを並べ替える必要がありますか?

0 投票する
4 に答える
11862 参照

java - JUnit: テスト中のクラスでアサーションを有効にする

assertJUnit の JVM インスタンスではアサーションが有効になっていないため、JUnit テスト スイートでは失敗しなかった Java ステートメントに何度か悩まされました。明確にするために、これらは実装内の「ブラックボックス」アサーション (不変条件のチェックなど) であり、JUnit テスト自体によって定義されたアサーションではありません。もちろん、テスト スイートでそのようなアサーションの失敗をキャッチしたいと思います。

明らかな解決策は、 JUnit を実行するときは常に慎重に使用する-enableassertionsことですが、より堅牢な解決策を希望します。1 つの代替方法は、すべてのテスト クラスに次のテストを追加することです。

これを達成するためのより自動的な方法はありますか?JUnit に対するシステム全体の構成オプション? メソッドに入れることができる動的呼び出しsetUp()

0 投票する
3 に答える
219 参照

visual-c++ - アサーション エラーが発生するのはなぜですか?

2 より大きい入力でアサーション エラーが発生するのはなぜですか? これは、配列の添字が各項のべき乗であり、array[subscript] の要素が係数である多項式プログラムの前身です。

0 投票する
8 に答える
21157 参照

java - Netbeans でアサーションを有効にする

私は何かをしたい

どうすればいいですか?