以下のイベントの投影資料です。 https://confengine.com/conferences/scrum-fest-osaka-2021/proposal/15337 お問い合わせは https://twitter.com/nihonbuson まで。 【発表資料中のURL】 P…
以下のイベントの投影資料です。 https://confengine.com/conferences/scrum-fest-osaka-2021/proposal/15337 お問い合わせは https://twitter.com/nihonbuson まで。 【発表資料中のURL】 P…
Moqとは? .NET環境の単体テストで使用する、外部モジュールのMock化(Stub化)パッケージです。 例えば、テスト対象のクラスがHTTPやシリアルポートで外部と通信していると、そのままでは単体テストを組むのは容易ではありません。(テスト用のサーバーを用意するなど) そういった、HTTP通信やシリアルポート通信をする部分をダミーのテスト用モジュールに置き換えるのがMoqです。 環境 Windows 10 Pro 2014 Visual Studio 2019 Version 16.6.3 言語:C# (.NET Framework 4.7.2) 単体テスト プロジェクト (.NET Framework) Moq 4.14.5 (NuGetからインストール) テスト対象クラス テスト対象クラスを、内部でシリアルポートで通信するクラスとします。 名前は、Communication として
Moq 実装メモ C# のテスト実装で Moq を使ったのでメモ。 環境 Visual Studio 2019 のプロジェクトテンプレート (NUnit テストプロジェクト (.NET Core)) を使用 NuGet パッケージから Moq をインストール テスト対象のクラス実装 あくまで用例のための実装であり、 Moq が活きるテスト対象ではない。 public class Human { /// <summary> /// 苗字 /// </summary> private string FamilyName { get; } /// <summary> /// 名前 /// </summary> private string GivenName { get; } /// <summary> /// 年齢 /// </summary> public virtual int Age {
こんにちは! リクルートテクノロジーズでセキュリティエンジニアとして活動している、藤原 巧です。 毎年恒例となっており、大きな反響をいただいている、エンジニアコースの新人研修の内容を紹介させていただきます。 研修の概要 リクルートテクノロジーズでは、新卒採用の新人向けに3ヶ月間の技術研修を行っています。この技術研修では大きく分けて2つのコースが設けられています。 1. プログラミングやWebサービスの構造の基礎を体系的に学び、その後一人につき、ひとつのスマホサイトを企画からリリースまで行うコース 2. 一定以上のプログラミングスキルと開発系経験がある新人に向けた、実際の開発で必要となる様々な技術要素をより深く学び、その後実際のサービスでチーム開発にてOJTを行うコース 今回公開するのは 2. で使用した資料です。 この技術研修は、そのほとんどの部分を内製で実施しています。 この研修の最大の
A cheat sheet for the XUnit test framework All source code can be found on GitHub here. This post is part of my cheat sheet series. using System; using System.Collections.Generic; using Xunit; using Xunit.Extensions; namespace GenericsExamples.Tests { public class AccountTests : IDisposable, // Allows Test TearDown via Dispose() IUseFixture<AccountTests.TestSetUpClass> // Allows Test Set Up via in
今MOCKを中心としてソースコードを記載しているのですが 忘れないように基本的な部分を書いてみました。 参考にならないかもしれませんが、備忘録として。 参考例: //MoqをNUGETからDL後、下記を定義 using Moq; //定義 var mock = new Mock</*インターフェース*/>(); //定義したMockの関数を設定 //ImplementMethod //ごまかしたい関数 // IsAny Matches any value of the given TValue type mock.Setup( x=> x.ImplementMethod(It.IsAny</*型*/>())) .Returns/*非同期の場合Asyncを追加*/( /*戻したい型やobject*/); 実装全て using Moq; namespace Verification { //実
Moq は、テストダブル(=単体テスト用の代役オブジェクト)を簡単に作るためのライブラリです。 テストダブル 単体テストにおける問題のひとつとして、以下のようなことがあります。 テスト対象の依存オブジェクトが・・・ ネットワーク通信が必要 データベースアクセスが必要 など、外部に依存する場合、そのままでは単体テストを作りにくいです。 これを解決するために、実際のオブジェクトの代わりを用意します。 テスト用の代役オブジェクトをテストダブルと呼びます。テストダブルはその役割に応じて、スタブ、モック、フェイク、などと呼称されます(それらの違いについては、本記事の主題と直接は関係がないので割愛します)。 典型的なテストダブルの実装 テストダブルはあくまで代役なので、本物と同じ振る舞いはしません。単体テストが動けば良いと割り切ります。 本物と同じ I/F を持つ。 通信などの振る舞いはしない。 特定
クロスプラットフォームで開発できる.NET Coreの基礎から開発実践までが学べる入門連載。最終回は単体テスト用のプロジェクトを作成して、テストを行う方法を説明する。 ← 前回 連載 INDEX .NET Coreと単体テスト .NET Coreで利用可能な単体テストツール .NET Coreは単体テストの実行も容易になるように設計されており、.NET Core CLIで単体テストプロジェクトの作成から実行まで行えるようになっている。単体テストフレームワークとして、xUnit、NUnit、MSTestがサポートされている。また、言語としてもC#、F#、Visual Basicのいずれも、これら3つのフレームワークで利用可能だ。 今回は、C#のクラスライブラリプロジェクトに、これら3つのフレームワークを利用した単体テストプロジェクトを作成しながら、簡単な使い方を説明しよう。なお、今回は同じソ
スタブとモックの違いというのを書いたのですが、書いているとき「テストダブル」という用語についてよく知らないまま書いていました。それをコメントで指摘され、改めて調べてみました。 5種類のテストダブル テストスタブ 実際の依存コンポーネントにかわりテスト対象に間接入力を行うもの。そのテスト内では間接入力の値を確定できる。 RSpecでいう allow(hoge).to revceive(:fuga).and_return('foo') テストスパイ テスト対象が他のコンポーネントに間接出力を行う場合、実際のコンポーネントの代わりにメッセージを受け取り記録するもの。モックとの違いは事前に期待する値を知っていて、一致しているかどうか検証を行うかどうか。 RSpecでいうと expect(hoge).to have_received(:fuga) モックオブジェクト テスト対象が他のコンポーネントに
もうちょっと規約的なものを「JavaでのUT作成基準を整理してみた」にもまとめてみました。 はじめに 去年、ブログの方に「ふつうのユニットテストのための7つのルール」という記事を書いたのですが、思ったより反響がありました。 あの記事で書いたのはあくまで原理・原則で、それを実現するためにはいくつかのテクニックが必要です。 特に、ああいうルールを作って「ユニットテストを書く事」を厳守するようにしても、 適切なテクニックを知らなければメンテが困難だったり、品質に寄与しなかったり、実行性能が悪いゴミが量産される可能性があります。 じゃあ、どうすれば良いかというと「最初からユニットテストが書きやすいように元のコードを設計する」ということです。 そう。まず身に付けるべきは「テストコードの書き方」では無く「テスト対象コード」すなわち「プロダクトコードの書き方」なのです。 また、ここで言ってる「最初から」
ユニットテストを書くとき、テスト対象が何か別のコンポーネントに依存していると、テストが書きにくいことがある。 例えば、その依存しているコンポーネントがまだ開発の途中で無いとか、あるいは異常系などテストしたい状況を作りにくかったり、実行にすごく時間がかかるなどなど。 そんなときは、依存しているコンポーネントをテストダブルと呼ばれる代替品で置き換えてやると良い。 Python にはバージョン 3.3 から標準ライブラリにテストダブル用のパッケージ unittest.mock が取り込まれた。 使っている Python のバージョンが 3.3 未満のときは PyPI から mock をインストールする。 これは基本的にバージョン 3.3 で導入された unittest.mock と同じもの。 まずはテストを書くための題材だけど、このブログのスクレイピングにする。 テストダブルが必要になる場面とし
これは Python3 Advent Calendar の記事です。夢はテストエンジニアです!ということでユニットテストについて書きます。 Python3 縛りとのことですが、この新ユニットテストフレームワークは Python 3.2 以降と 2.7 以降が対象です。これ以前のバージョンでこの新ユニットテストフレームワークを利用したい場合は、それぞれ unittest2py3k (3 系)、 unittest2 (2 系) というバックポートが用意されています。新ユニットテストは mock や IronPython 等の開発者としても知られている Michael Foord 氏を中心に開発されました。 >>> Python とユニットテストの歴史 Python のユニットテストは、1999 年 xUnit ファミリーの PyUnit として開発され、2001 年に公開された Python
前々から、Python, Django 界隈の単体テスト事情をまとめたいと思っていたのですが、こんな素敵なまとめ記事を見つけました。 Python用のユニットテストツールまとめ | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記 この記事では、unittest, unittest2, doctest, py.test, nose のほか、それこそ聞いたことのないようなものまで取り上げてくれているのですが、今回は、自分で使いそうな範囲のテストツールについて少しディープにまとめてみようと思います。 取り上げるのは、以下の 4種類(「Django + unittest」を unittest としてカウントすると 3種類)のテストツールです。 ほかにも、pytest や doctest も取り上げたかったのですが、まだ使ったことがなかったので割愛します(後で書くことになるか
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く