ユニットテストの古いコードと新しいコードを開始する方法は?

StackOverflow https://stackoverflow.com/questions/1137167

  •  16-09-2019
  •  | 
  •  

質問

私は自分の目的の経験がほとんどないことを認めています。少し前にDunitで試してみましたが、アプリケーションのクラス間に非常に多くの依存関係があったため、あきらめました。それはかなり大きな(約150万のソースライン)Delphiアプリケーションであり、私たちはそれを維持するチームです。

今のテストは、バグをリリースして報告する前にそれを使用する1人によって行われます。また、TestComplete 6にいくつかのGUIテストを設定しましたが、アプリケーションの変化のために失敗することがよくあります。

DelphiのBoldは、データベースに対する持続性フレームワークとして使用されます。私たちは皆、Unitestingが行く方法であることに同意し、ECOを使用してDotNetで新しいアプリケーションを永続化フレームワークとして書くことを計画しています。

私はちょうどUnittestingからどこから始めればいいのかわかりません...良い本、URL、ベストプラクティスなどはありますか?

役に立ちましたか?

解決

まあ、ユニットテストの課題はテスト自体ではなく、 テスト可能なコードを作成します. 。コードが記述された場合 いいえ テストについて考えて、おそらく本当に苦労するでしょう。

とにかく、リファクタリングできる場合は、リファクタリングを行い、テスト可能にします。可能な限りオブジェクトの作成とロジックと混合しないでください(Delphiはわかりませんが、これに役立つ依存性噴射フレームワークがあるかもしれません)。

このブログ テストについて多くの良い洞察があります。小切手 この記事 たとえば、私の最初の提案はそれに基づいていました)。

提案については、最初にコードの葉のノードをテストしてみてください。他のクラスに依存しないクラスを試してください。模擬を必要としないため、テストが簡単になるはずです。

他のヒント

通常、レガシーコードのユニットテストを作成するには、多くのリファクタリングが必要です。これをカバーする素晴らしい本はマイケルフェザーのものです」レガシーコードで効果的に作業します"

追加の提案の1つは、ユニットテストカバレッジツールを使用して、この作業の進捗状況を示します。 Delphiコードの良いカバレッジツールが何であるかはわかりません。これは別の質問/トピックになると思います。

レガシーコードで効果的に作業します

より一般的なアプローチの1つは、コードを変更するときにユニットテストを作成することです。すべての新しいコードはユニットテストを取得し、すべてのコードを変更すると、最初にテストを書き、検証し、変更し、再確認し、変更が必要なテストを書き込み/修正します。

優れたユニットテストカバレッジを持つことの大きな利点の1つは、あなたが行った変更が誤って他の何かを壊さないことを確認できることです。このアプローチにより、当面のニーズに努力を集中させながら、それを行うことができます。

私が採用した代替アプローチは、協同組合を介して私のユニットテストを開発することです:)

レガシーコードを使用すると、Mock ObjetCはユニットテストを作成するのに非常に役立ちます。

DelphiとMocksに関するこの質問を見てください。 あなたの好きなDelphi Mocking Libraryは何ですか?

.NET UNITTSTINGについては、これを読んでください: "ユニットテストの芸術:.NETの例で"

最高の実績について:
あなたが言ったことは正しいことです。クラス間の依存のためにユニットテストを書くのが難しい場合があります...そのため、クラスの実装の直後または直前にユニットテストを書きます。このように、テストを書くのが難しい場合は、デザインの問題があることを意味します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top