assertThat、assertEquals、assertTrue
昨夜は AgileChina 2011 のオープンハウスイベントで、私はコーディングセッションのボランティアとして参加しました。コーディング セッションの主な目的は、参加する開発者にペア プログラミング、テスト駆動開発、リファクタリングのプロセスを体験してもらうことです。会社では 8 ~ 9 人の同僚と参加する同僚がこのプロセスを一緒に体験できるように、次の 4 つの異なるタイプのプログラミングの質問を用意しました。
タイムシート
スーパーマーケットのレジ
ソースコードの行数
ブラックジャックゲーム
イベントは 2 つの小さな問題を除いて非常に成功しました: 1. 会社はこのイベントのために新しいキーボードとマウスを購入しましたが、入力するときの感触が悪く、キーボードのキーが平らでした。ある参加者はキーボードにあまり慣れていないため、いつも誤ってスラッシュを何度も入力してしまうことがあります。 2. システムのロック画面のショートカット キーが IDE の書式設定コードのショートカット キーと競合し、間違ったキーを 2 回入力して画面をロックしてしまいました。さらに、そのマシンは私のものではなく、入力を手伝ってくれる他の同僚を見つけなければなりませんでした。汗だくです。 Pair の最終ラウンドで、クラスメートが「assertEquals を使用しないのはなぜですか?」と尋ねました。皆さんはassertThatを使用しているようですが、assertEqualsやassertTrueなどの使用はあまり推奨されていないようです。 イベントも終わり間近で集合写真を撮る予定だったので、簡単に答えました。この質問に対する詳しい回答は次のとおりです。 アサーションから何を取得したいですかテストのアサーションから何を取得したいですか?テストが失敗した後に赤いバーを表示するだけでは済みません。さらに、テストからいくつかの情報も取得したいと考えています。 1. テストが失敗したのはどこですか?すべてのアサーションがこの機能を提供できます2. テストが失敗した理由を定義するのは困難です。ほとんどのアサーションは同様の機能を提供できます: 期待される結果と実際の結果 ただし、アサーションが異なれば提供される情報も異なります。等しいなどの単純な主張を使用して比較することが難しい問題もあります。さらに、アサーションには文書化という非常に重要な役割もあります。つまり、テスト コードを読むと、すべての期待を満たしているかのようにアサーションが表示されます。そして非常に明確な期待。 実際の例assertThat の 2 番目のパラメータを見てください。org.hamcrest には非常に豊富な Matcher 実装があります。たとえば、API はユーザー オブジェクトのリストを返し、このリストに期待するユーザーが含まれていることをアサートしたいとします。hamcrest には hasItem のような Matcher があります。1: assertThat(userDAO.findAll(), hasItem(expected));
1: assertTrue(userDAO.findAll().contains(expected));
1: assertThat(userDAO.findAll(), not(hasItem(expected));
1: assertFalse(userDAO.findAll().contains(expected));
1: assertEquals(userDAO.findBy(id), expected);

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

eコマースプラットフォーム上のSKUおよびSPUテーブルの設計の詳細な説明この記事では、eコマースプラットフォームでのSKUとSPUのデータベース設計の問題、特にユーザー定義の販売を扱う方法について説明します。

データベースクエリにTKMYBATISを使用する場合、クエリ条件を構築するためにエンティティクラスの変数名を優雅に取得する方法は一般的な問題です。この記事はピン留めします...
