0

xmpp4r RubyGem をラップする gem を書いています。できる限りのテストを追加したいのですが、テストが初めてで、ここで少し立ち往生しています。

基本的に、クラスの1つに「接続」機能を持たせたいのですが、そのようなことをテストする方法がまったくわかりません...テストについてオンラインで見つけることができるすべての例は単純化されすぎています。「緑色のブロッコリーです」など、おわかりでしょう。

より複雑に見えるものをどのようにテストできますか? このことに関する優れたドキュメントへのリンクと、自分の経験からのよりパーソナライズされた回答があればいいでしょう。

編集: 例外が発生しなければ、テストに合格する可能性がありますか? これを行うことで正しい道を歩むことができますか?

4

2 に答える 2

2

まず、gem 自体がテスト済みかどうかを確認します。そうであり、テストに合格している場合は、おそらく gem のコードを信頼する必要があります。次に、成功または失敗のシナリオをテストするときに、gem への呼び出しをモックし、適切な呼び出しを返すことができます。

すなわち

xmpp4r.should_receive(:connect).and_return(mock("xmpp4r"))

gem がテストされていない場合は、自分でテストを行っていないのとほぼ同じです。別の gem を使用するか、自分でテストする (または TDD を使用して作成する) ことを検討する必要があります。

于 2013-07-29T00:48:08.807 に答える
2

あなたがプログラマーであることを思い出してください。あなたは自分自身のコード世界の支配者です。

他の人が使いやすいアプリケーションを作成するのと同じ方法で、自分自身を助け、コードをテストしやすくすることができます。OO プログラミングを行う主な利点の 1 つは、動作をメソッドにカプセル化することであり、これらのメソッドを主要なテスト ポイントとして使用してコードをテストしやすくなります。コードのテストが難しい場合は、自分自身またはテスターをアプリケーション/コードの別のユーザーとして認識していないためです。

テストは、フレームワークやテクノロジーとは直接関係ありません。それをコード自体から切り離されたもの、それよりも大きなものとして見るようにしてください。何かをテストする方法がわからないのは、おそらく、なぜそれが必要なのか、どのように使用されるのかがわからないからです。

TDD (テスト駆動開発) を試してみてください。

また、テストにはさまざまな種類があることを覚えておいてください。統合前の問題を予測するため)

テストは費用がかかるため、すべてをテストすることは問題ではなく、テストする必要があるものをテストすることです。

NASAでさえ「すべて」をテストしているわけではありません

テストは...プログラミングのように深いものです。ナイスダイブ!

http://en.wikipedia.org/wiki/Software_testability

于 2013-07-29T00:19:17.970 に答える