13

Python は、コンパイルされたどの言語よりも多くの生産性を提供することを知っています。C# でプログラミングしており、ユニット テスト ケースを C# 自体で記述する必要があります。単体テスト用に記述したコードの量を見ると、元のコードの約 10 倍になります。

C# ではなく、IronPython で単体テスト ケースを作成することは理想的な選択ですか? 体がそのようにしたことがありますか?私はいくつかのテストケースを書きましたが、それらは良いようです。しかし、毛むくじゃらのとがったマネージャーは受け入れません。

4

8 に答える 8

6

Python は C# コードの単体テストに最適です。私たちのアプリは 75% が Python で、25% が C#(Python.Net) で、単体テストは 100% python です。

Python でスタブとモックを使用する方がはるかに簡単であることがわかりました。Python は、効果的な単体テストを作成するための最も重要なコンポーネントの 1 つです。

于 2008-12-06T22:28:16.257 に答える
4

Will の答えは良いです。あなたは開発者に新しい要件を導入しています。

また、ツールのサポートはどのようなものですか? 私はこれを自分で試したことはありませんが、知りたいです:

  • 失敗した単体テストをデバッグするのはどれくらい簡単ですか?
  • IDE から単体テストを実行するのはどれくらい簡単ですか? (例: ReSharper を使用)
  • 継続的なビルド サーバーから単体テストを自動化するのはどれくらい簡単ですか?

これらはすべて問題ない可能性がありますが、それらを確認し、結果を文書化する必要があります。

もちろん、他のオプションと IronPython があります。Booかなり明白な選択です。

于 2008-12-04T10:36:19.440 に答える
3

実際にテストすることは、新しい言語を統合することを試みる絶好の機会です。Pythonのような言語はテストで特に優れており、試すのはリスクの低いプロジェクトです。最悪の場合はそれほど悪くはありません。

Pythonで別の言語をテストした経験がある限り、私はこのようなCおよびC ++システムをテストしましたが、それは素晴らしかったです。間違いなく一見の価値があると思います。

ただし、Jonの言うことは真実です。つまり、Python全般、特にIronPythonのツールのレベルは、C#のレベルにはほど遠いものです。それがあなたにどれほど影響を与えるかは、パイロットでわかることです。

于 2008-12-05T00:04:30.853 に答える
3

Python は C# よりもはるかに冗長な言語ではないため、一般的に自動化された単体テストを行うことに抵抗がある開発者がまだ多くいるため、実際には単体テストを作成する障壁が低くなる可能性があります。通常、C# で同等のコードを記述するのに時間がかからない IronPython のような言語を導入して使用させると、実際には、より多くの単体テストを作成することが促進される可能性があります。これは常に良いことです。

さらに、テスト コードに IronPython を使用すると、プロジェクト全体のコード行数 (LOC) が少なくなる可能性があります。つまり、単体テストが無視されたり破棄されたりするのではなく、長期的に維持される可能性が高くなります。

于 2008-12-04T18:57:17.963 に答える
2

明らかな欠点は、コードに取り組む全員が、1 つの言語だけでなく 2 つの言語に堪能である必要があることです。私はかなり毛むくじゃらですが、それほど尖っていませんが、マネージャーが懐疑的である理由はわかります.

于 2008-12-04T10:29:38.407 に答える
1

私は最近、mbUnitNUnitでパラメーター化されたテストを発見した後、自分のテスト態度を再評価しています。以前は、可能な限りのテストを自動化する方法として Python unittest をお勧めしました。これは、テストの簡潔な性質と発見しやすさのためです。

パラメーター化されたテストでは、さまざまなデータ パラメーターを使用してテスト フィクスチャをカスタマイズできるため、C# テストを Python テストよりもさらに簡潔にすることができます。

[TestCase(12, 3, 4)]
[TestCase(12, 2, 6)]
[TestCase(12, 4, 3)]
[TestCase(12, 0, 0, ExpectedException = typeof(System.DivideByZeroException),
      TestName = “DivisionByZeroThrowsExceptionType”)]
[TestCase(12, 0, 0, ExpectedExceptionName = “System.DivideByZeroException”,
      TestName = “DivisionByZeroThrowsNamedException”)]
public void IntegerDivisionWithResultPassedToTest(int n, int d, int q)
{
      Assert.AreEqual(q, n / d);
}
于 2010-06-08T04:17:27.230 に答える
0

とても興味深い。

すべてのコードを(単体テストだけでなく)IronPythonで作成するとどうなりますか?コードが約10分の1になりますか?

たぶん私もIronPythonを学ぶべきです。

于 2008-12-04T23:36:58.303 に答える
0

ウィルとジョンと一緒に行かなきゃ…

テストは、テストしているコードと同じ言語で行いたいと考えています。認知コンテキストの切り替えが少なくなります。しかし、おそらく私は以前ほど精神的に機敏ではありません。

  • ジョン
于 2009-01-14T17:41:30.910 に答える