1

私はユニットテストを学んでいて、テストとは何か、そしてテストと一緒に行く場所の境界に混乱しています。

したがって、この質問の答えは非常に明確です-https://stackoverflow.com/a/1257583/445330

私が目立つのは、「データベースと通信する」などです。

私が学習している特定のシステムでは、オブジェクトとして表されるxmlツリー内の特定のノードをテストする必要があります。

このオブジェクトをロードする以外に、この値の存在をテストするにはどうすればよいですか?または、単体テストと機能テストを混同していますか?

4

3 に答える 3

2

あなたがリンクしている答えの要点はそれです

単体テストは外部リソースに依存してはなりません。

XMLツリーがプログラムで作成され、ファイルシステム(またはその他の外部リソース)からロードされるのではなく、メモリにのみ保存される限り、正しく実行されます。

プログラムでXMLツリーを作成するのは面倒な場合があるため、テストと同じパッケージにツリーをXMLファイルとして保存し、次のコマンドでロードすることができます。

this.getClass().getClassLoader().getResourcesAsStream(name);

これは、テストスイートのクラスパスからロードされるため、外部リソースとしてカウントされません。

于 2013-01-04T20:46:51.257 に答える
0

これが単なる単体テストである場合は、xml ツリーを読み取っているコードをテストし、期待どおりにツリーをチェックしています。テスト オブジェクトをロードするには、いくつかの方法があります。1 つは、単体テストで、テストのセットアップの一部としてオブジェクトを構築することです。もう 1 つの方法は、xml ツリーのテスト バージョンを (テスト クラスと一緒に) フラット ファイルに格納し、テスト時にファイルを解析することです。

要点は、テストへの入力は、何らかの外部リソース (データベースなど) の状態に依存するものではなく、コントロールである必要があるということです。

于 2013-01-04T20:22:38.053 に答える
0

私のテストでは、特定の関数に対して 1 つだけでなく、より多くのテストを作成したため、単体テストは可能性の一部です。たとえば、除算で特定のケースを選択します。両方のオペランド、単一のオペランドなど、特定の数値間隔の制限だけでなく、通常の状況にも 0 を使用します。すべてのテストは予測可能であるため、コードを変更すると、ケースの実行により変更の安定性が保証されます。

あなたの場合、単一の単体テストを行っていると思います。

単体テストと機能テストのウィキペディアの定義を受け入れます。

機能テストは幅広く、プログラム指向です。単体テストは、テスト可能なコードの最小限の部分を対象としており、可能な限り一般的なものにする必要があります。

あなたの特定のケースでは、「私が学習している特定のシステムでは、xmlツリー内の特定のノードをテストする必要があります-オブジェクトとして表されます」関数の結果が、よく知られている入力文字列 file を持つべきオブジェクトである場合、オブジェクト静的定義、および特定の入力の出力が特定のノードを持つオブジェクトであるというアサーション、または戻りオブジェクトを抽出し、特定のノードを抽出し、特定のノードが特定の値/オブジェクトと等しい必要があることをアサートする

お役に立てれば幸いです

于 2013-01-04T20:30:19.770 に答える