タグ付けされた質問 「unit-testing」

ユニットテストは、ソースコードの個々のユニットをテストして、それらが使用に適しているかどうかを判断する方法です。

3
unittest.TestCaseの__init__
unittest.TestCase初期化時にクラスが実行する処理にいくつか追加したいのですが、それを行う方法がわかりません。 今私はこれをやっています: #filename test.py class TestingClass(unittest.TestCase): def __init__(self): self.gen_stubs() def gen_stubs(self): # Create a couple of tempfiles/dirs etc etc. self.tempdir = tempfile.mkdtemp() # more stuff here この一連のテスト全体で、すべてのスタブが1回だけ生成されるようにしたいと思います。私はsetUpClass()Python 2.4を使用しているので使用できません(Python 2.7でも機能していません)。 ここで何が悪いのですか? 私はこのエラーを受け取ります: `TypeError: __init__() takes 1 argument (2 given)` ... __init__コマンドを使用してすべてのスタブコードを実行すると、その他のエラーが発生しpython -m unittest -v testます。


19
Visual StudioからNUnitをデバッグモードで実行するにはどうすればよいですか?
最近取り組んでいるC#のテストフレームワークを構築しています。ワークスペース内にNUnitをセットアップし、コンポーネントをテストするための新しいプロジェクトを用意しています。ユニットテストをNunit(v2.4)からロードすると、すべてうまくいきますが、デバッグモードで実行していくつかのブレークポイントを設定するのが本当に役立つところまでたどり着きました。 私はいくつかのガイドからの提案を試しましたが、すべてがテストプロジェクトの「デバッグ」プロパティの変更を提案しています。 Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll 私はそこでコンソールバージョンを使用していますが、GUIの呼び出しも試みました。デバッグしようとすると、どちらも同じエラーが発生します。 Cannot start test project 'TestDSP' because the project does not contain any tests. これは、通常、\ DSP.nunitをNunit GUIにロードし、テストを行う場所だからです。 私は問題がVSがそれ自身のテストフレームワークを実行したいということかもしれないと考え始めています、そしてそれがNUnitテストを見つけることができない理由です? 編集:テストフィクスチャについて質問する人にとって、TestDSPプロジェクトの.csファイルの1つは、おおよそ次のようになります。 namespace Some.TestNamespace { // Testing framework includes using NUnit.Framework; [TestFixture] public class FirFilterTest { [Test] public void Test01_ConstructorTest() …

3
明示的に指定したり、オーバーロードを使用したりせずに、シグニチャーにオプションの引数を持つメソッドをMoqするにはどうすればよいですか?
次のインターフェースがあるとします。 public interface IFoo { bool Foo(string a, bool b = false); } Moqを使用してそれを模擬しようとしています: var mock = new Mock<IFoo>(); mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false); コンパイル時に次のエラーが発生します。 式ツリーには、オプションの引数を使用する呼び出しまたは呼び出しを含めることはできません 上記の問題はMoqの問題リストの拡張として発生したことがわかり、4.5リリースに割り当てられているようです(それがいつでも)。 私の質問は、上記の問題がすぐに修正されない場合、どうすればよいですか?私のオプションは、それをモックするたびにオプションのパラメーターのデフォルト値を明示的に設定する(最初の場所で1を指定するポイントを無効にする)か、またはブール値なしでオーバーロードを作成する(私がしたように)だけですか? C#4より前)? または、誰かがこの問題を克服するためのより賢い方法に出くわしましたか?
119 c#  unit-testing  moq 

14
CocoaPodsによるXcodeユニットテスト
私は過去数日間これで壁に頭をぶつけてきましたが、複数のGoogle / SO / Github検索にもかかわらず、私が抱えている問題の解決策を見つけることができません! 私がやろうとしているのは、Firebaseポッドを利用するアプリのユニットテストを作成することだけです。 Xcode 7.3.1とCocoapods 1.0.1を使用しています。更新:問題はXcode 8.0でも残っています このpodfileで: platform :ios, '9.0' use_frameworks! inhibit_all_warnings! target 'MyApp' do pod 'Firebase' pod 'Firebase/Auth' pod 'Firebase/Database' pod 'Firebase/Storage' target 'MyAppTests' do inherit! :search_paths end end 私のXCTestクラスでは、 必要なモジュール「Firebase」がありません エラー @testable import MyApp または、このpodfileを使用します。 platform :ios, '9.0' use_frameworks! inhibit_all_warnings! def common_pods pod 'SwiftyTimer' …

30
彼らはなぜ学校でこれらのことを教えないのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 夏の間、私は幸運にもGoogle Summer of Codeに参加することができました。私は多くのことを学びました(おそらく、私の大学のすべての授業の合計で学んだよりも多くのことを学びました)。彼らがなぜ私が学校でもっと早く学んだことのいくつかを教えないのか、私は本当に不思議に思っています。いくつか例を挙げると: ユニットテスト バージョン管理 アジャイル開発 彼らはかなりの時間を費やして、データ構造やアルゴリズムなどの他のことを前もって教えているように思えます。私はまだそれらを早い段階で学ぶことが非常に重要だと思いますが、なぜ彼らは彼らの前にこれらの3つについてより多くを教えないのですか?それとも、このようなことをあまり教えていないのは私の学校だけですか? 誤解しないでください。大学が常に流行のプログラミングの流行を教えるのは望ましくないと思いますが、教授は「コーディングを始める前に図を描く」以外のことを教えてはいけません。

4
いくつかのテストのためのUnittest setUp / tearDown
テストのシナリオの開始/終了時に実行される関数はありますか?関数setUpおよびtearDownは、すべてのテストの前後に実行されます。 私は通常これが欲しいです: class TestSequenceFunctions(unittest.TestCase): def setUpScenario(self): start() #launched at the beginning, once def test_choice(self): element = random.choice(self.seq) self.assertTrue(element in self.seq) def test_sample(self): with self.assertRaises(ValueError): random.sample(self.seq, 20) for element in random.sample(self.seq, 5): self.assertTrue(element in self.seq) def tearDownScenario(self): end() #launched at the end, once 現時点では、これらのsetUpとtearDownは単体テストであり、すべてのシナリオ(多くのテストを含む)で広がります。1つは最初のテストで、もう1つは最後のテストです。

3
JUnitクラスの特別なテストパッケージへの分離?
私は読書を通じてテスト駆動開発の概念を学んでいます職人の記事を(クリック職人の下にしてトピックを)私の前の質問への答えで推奨「のJUnitと適切なソフトウェア工学を学ぶためのサンプルプロジェクト」。今のところ大好きです! でも今は座って自分で試してみたいです。簡単な答えだけでいいと思います。 JUnitテストクラスと実際のコードをどのように整理しますか?私は主にパッケージ構造について話していますが、他のメモの概念も役に立ちます。 テストクラスをorg.myname.project.test。*に配置し、通常のコードをorg.myname.project。*に配置しますか?テストクラスを通常のクラスと並べて配置していますか?クラス名に接尾辞を付けるのではなく、接頭辞にTestを付けますか? これは、すぐに心配する必要のないことのように思えますが、私は非常に組織中心の人です。私はほとんどですむしろ実際に物事を得るよりも、成し遂げるに何を追跡するための方法を考え出すより多くの時間を費やしている人のようなもの。 そして、私は現在きれいにパッケージに分割されているプロジェクトを持っていますが、プロジェクトは混乱しました。すべてをリファクタリングしてテストを作成しようとするのではなく、テストを最初からやり直したいと思います。しかし、最初に、テストの場所を知る必要があります。 編集:私は完全にMavenを忘れましたが、あなたの大多数がそれを使用しているようです!以前は、Mavenが完全に故障した特定のユースケースがありましたが、Antが必要な柔軟性を提供してくれたため、結局Antに執着しましたが、おそらく間違ったアプローチをとっていたのではないかと思っています。テスト駆動開発でうまくいくように思えるので、Mavenをもう一度試してみると思います。
118 java  unit-testing  junit 

1
関数をモックして例外を発生させ、exceptブロックをテストする
foo別の関数(bar)を呼び出す関数()があります。呼び出しでbar()が発生したHttpError場合、ステータスコードが404の場合は特別に処理し、それ以外の場合は再発生させます。 このfoo関数の周りにいくつかの単体テストを書いて、への呼び出しを模倣しようとしていますbar()。残念ながら、ブロックでbar()キャッチされた例外を発生させるためにモックされた呼び出しを取得できませんexcept。 これが私の問題を説明する私のコードです: import unittest import mock from apiclient.errors import HttpError class FooTests(unittest.TestCase): @mock.patch('my_tests.bar') def test_foo_shouldReturnResultOfBar_whenBarSucceeds(self, barMock): barMock.return_value = True result = foo() self.assertTrue(result) # passes @mock.patch('my_tests.bar') def test_foo_shouldReturnNone_whenBarRaiseHttpError404(self, barMock): barMock.side_effect = HttpError(mock.Mock(return_value={'status': 404}), 'not found') result = foo() self.assertIsNone(result) # fails, test raises HttpError @mock.patch('my_tests.bar') def test_foo_shouldRaiseHttpError_whenBarRaiseHttpErrorNot404(self, barMock): barMock.side_effect …

17
TDDと単体テストの比較[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 この質問を改善する 私の会社はコードを単体テストするのがかなり新しいです。私はTDDと単体テストについてしばらく読んでおり、それらの価値を確信しています。私は、TDDがプログラミング方法について学習し、考え方を変える努力の価値があることをチームに納得させようとしましたが、それは苦労です。これは私の質問に私をもたらします。 TDDコミュニティには、テストの作成とコードの作成に非常に熱心な人がたくさんいます(そして私も彼らと一緒にいます)が、TDDに苦労しているチームにとって、妥協はまだ追加の利点をもたらしますか? コードが記述されたら(おそらくコードをチェックインするための要件として)、チームにユニットテストを記述させることに成功する可能性があり、私の前提は、これらのユニットテストの記述にはまだ価値があるということです。 苦労しているチームをTDDに取り込む最善の方法は何ですか?それに失敗したとしても、コードが書かれた後でも、単体テストを書く価値はありますか? 編集 私がこれから取り除いたのは、コーディングプロセスのどこかでユニットテストを開始することが重要であることです。チームのコンセプトを取り上げた人は、最初にTDDとテストに向けて動き始めます。皆様のご意見ありがとうございます。 ファローアップ 私たちは最近、新しい小さなプロジェクトを開始し、チームのごく一部がTDDを使用しました。残りはコードの後に​​ユニットテストを作成しました。プロジェクトのコーディング部分をまとめた後、コードの後のユニットテストの記述は、TDDコーダーが既に実行されており、より堅実なコードを使用していたことに驚いていました。それは懐疑論者に勝つための良い方法でした。私たちはまだ先に多くの成長する苦痛を持っていますが、意志の戦いは終わったようです。アドバイスをくれた皆さん、ありがとう!

11
テスト中にDateTime.Nowを上書きする良い方法は何ですか?
今日の日付に基づいて将来の計算を正しく行う(C#)コードがあります。テストで今日の日付を使用すると、テストで計算を繰り返す必要がありますが、これは正しくありません。結果が既知の値であることをテストできるように、テスト内で日付を既知の値に設定する最良の方法は何ですか?

6
「スタブ」とは何ですか?
それで、TDDにより多くを取り入れるという私の新しい年の決議を続けて、私は今Rhino Mocksでもっと働き始めています。 私がやりたいことの1つは、自分が入っているものを実際に理解することです。そのため、これまでに見たことの理解を確認したいと思いました(そして、資源)。 「スタブ」とは何ですか?

2
クラスのモック:Mock()またはpatch()?
私はPythonでモックを使用しており、これらの2つのアプローチのどちらが優れているのか疑問に思っていました(読んで:よりpythonic)。 方法1:模擬オブジェクトを作成して使用するだけです。コードは次のようになります。 def test_one (self): mock = Mock() mock.method.return_value = True self.sut.something(mock) # This should called mock.method and checks the result. self.assertTrue(mock.method.called) 方法2:patchを使用してモックを作成します。コードは次のようになります。 @patch("MyClass") def test_two (self, mock): instance = mock.return_value instance.method.return_value = True self.sut.something(instance) # This should called mock.method and checks the result. self.assertTrue(instance.method.called) どちらの方法も同じことを行います。違いがわかりません。 誰かが私を啓発できますか?

14
Pythonでの単体テストからのデータの出力
Pythonでユニットテストを記述している場合(unittestモジュールを使用)、失敗したテストからデータを出力することは可能ですか?それを調べて、エラーの原因を推測するのに役立てることができますか?一部の情報を運ぶことができるカスタマイズされたメッセージを作成する機能を知っていますが、文字列として簡単に表現できない、より複雑なデータを処理する場合があります。 たとえば、Fooクラスがあり、testdataというリストのデータを使用して、メソッドバーをテストするとします。 class TestBar(unittest.TestCase): def runTest(self): for t1, t2 in testdata: f = Foo(t1) self.assertEqual(f.bar(t2), 2) テストが失敗した場合、t1、t2、fを出力して、この特定のデータが失敗した理由を確認することができます。出力とは、テストが実行された後、他の変数と同様に変数にアクセスできることを意味します。

5
Spring MVCテストを使用したマルチパートPOSTリクエストの単体テスト
自動車を保存するための次のリクエストハンドラがあります。たとえばcURLを使用すると、これが機能することを確認しました。ここで、Spring MVC Testを使用してメソッドを単体テストしたいと思います。fileUploaderを使用しようとしましたが、正常に機能しません。また、JSON部分を追加することもできません。 このメソッドをSpring MVCテストで単体テストするにはどうすればよいですか?これに関する例を見つけることができません。 @RequestMapping(value = "autos", method = RequestMethod.POST) public ResponseEntity saveAuto( @RequestPart(value = "data") autoResource, @RequestParam(value = "files[]", required = false) List<MultipartFile> files) { // ... } 自動+ 1つ以上のファイルのJSON表現を更新します。 正解に100の賞金を追加します!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.