あなたはNUnitを指しているので、私はNUnitが理論によって意味するものをWRTに答えます。これは、xUnit.Netがこの用語をどのように使用するかとはまったく異なります。
私はJUnitから、特にDavid Saffの仕事からの理論を得ました。ここには件名に関する記事が1つあります:http://groups.csail.mit.edu/pag/pubs/test-theory-demo-oopsla2007.pdf Googleの "saff theory"ともっと詳しく見ていきます。
基本的にテストを作成するときに、テストされたコードがどのように機能するかについての理論があることがあります。 (この答えでは、小文字の理論は英単語ですが、理論はNUnitのことです)これは数学的な推論で特に一般的です。たとえば、平方根を計算するプログラムを考えてみましょう。私は、負でない数字の平方根は、それ自身で乗算されたときに元の数を与えるような値であると理論化することができます。これは計算に関する完全に自己完結した声明です。 NUnitのを使用して
、私はこのようなテストを書くことができ...
public void SqrtTest(double value)
{
Assume.That(value >=0);
double answer = SquareRootOf(value);
Assert.That(answer*answer, Is.EqualTo(value));
}
このテストは関係なく、我々はそれを与えるどのような数働きません。数値が負の場合、結果は確定的ではなく、結果全体には影響しません。正の場合は、実際のアサーションが実行され、テストは成功または失敗のいずれかになります。
理想的な世界では、提供される値はどこから来てもかまいません。 JUnitでは、彼らはデータポイントから来て、私はそれをコピーしました。主に暫定的な解決策としてプログラマ指定することも許可しました。最終的には、プログラマーやテスターの介入なしに、テストフレームワークがTheoryのためのデータを生成するさまざまな方法をサポートするというアイデアがありました。
残念ながら、私たちはまだ最後のビットを待っています。 :-)
ボトムライン、理論を持っているときに理論を使うべきだと思います。ロジックを一切持たないサンプルがある場合は、テストを使用してください。ほとんどのビジネスアプリケーションで起こるIMEです。
最近、私は理論に関するかなり長い章を書くことを望んでいます。
あなたの答えは非常に説得力があります。それでも私はいくつかの質問があります(私はもっと学びたいからです)が、私は一般的な考えを持っていると思います。さて、私の質問:データポイントを通して理論への入力を制限できるのであれば、理論をテストに変換していないのでしょうか? –
はい、理論上です。 :-) – Charlie
ある意味では、データポイントを選択することで、アプローチは「純粋」になりませんが、実際には、理論ではそれぞれの引数についてデータポイントが使用されるため、見えなかった問題が発生します。もちろん、ランダムなパラメータを使用してさらに多くのデータポイントを作成することもできます。 – Charlie