ソフトウェア開発において,プログラムの単体(ユニット)テストを支援するテスティング・フレームワークの総称. Smalltalk 用の SUnit,Java 用 の JUnit,C# 用の NUnit,C++ 用の CppUnit,C 用の CUnit,Visual Basic 用の VBUnit,Lotus Script 用の LSUnit 等,様々なプログラミング言語用がある.
goal XUnitを使ったテストにおいて、MemberDataを使い、データドリブンテストを行ったとき、Testエクスプローラーで1件のテストとして認識されるのを何とかしたい。 つまり、データごとのテストとして認識されたい。 前提 テストデータとして、複雑なオブジェクトを想定する。 プリミティブ型の場合、標準の方法でやりたいことが実現できているので、そのケースは対象外とする。 テストデータの実装例は以下の通り。 public class TestData { public int IntProp { get; set; } public string StringProp { get; se…
はじめに 変更しやすいコードが書けないのにソフトウェア開発とか舐めているのですか 天使様1ごめんなさい〜、nikkieです 「かわいい」と技術書が夢の合体を果たした、ちょうぜつ本(『ちょうぜつソフトウェア設計入門』)!🤗 読書会と絡めて読み進めており、今回は第6章「テスト駆動開発」を6.4まで読みました。 目次 はじめに 目次 前回のちょうぜつ本! 6章前半(6.1〜6.4) 単体テストにまつわる考え方 モックってそういうことか! IMO:Pythonのモックについて思うこと 終わりに P.S.その1 テスト駆動開発を楽しく学ぶ P.S.その2 9/1(金) 第6章「テスト駆動開発」前半のちょ…
xUnit.netのTheoryDataを使ってテストコードを書いてみます。 実行環境 Visual Studio 2022 17.2.0 .NET 6 xUnit 2.4.1 このような名前と年齢を結合した文字列を返すメソッドのテストコードを書いてみます。 public string GetFullNameWithAge(string lastName, string firstName, int age) => $"{lastName} {firstName} ({age})"; TheoryDataを使わない場合 InlineData属性を使ってテストメソッドを書くとこんな感じです。 […
サマリー LINQPadはv.6.9からxUnitをサポートしていて、ユニットテストが書けます。 https://www.linqpad.net/LINQPad6.aspx You can now add xunit test support to your query via new option on the Query menu. This adds the required references, a runner, and a sample test method to get you started. There's also a option on the Query menu …
Purpose 直書き ライブラリ化 お手本(entity-framework-core-mock) 設定 コード ref まとめ Purpose UnitTestでDB Contextを使ったServiceをテストする方法について調べる。 直書き Moqを使ってEntityframeworkのモックを作成するには?【単体テスト】を参考に、テストを作成した。 public void ConfirmOperationForDbContext_OneItemIsActive_ReturnFoundItem() { #region Arange //DBから取得したデータを想定したテストデータを作成…
xUnitでテストコードを書く前に、参照ではまりました。 エラー テスト対象のプロジェクトのフレームワークとテストプロジェクトのフレームワークを同じにしないとエラーがでる。 ソリューション構成 テスト対象プロジェクト:TestCollection テストプロジェクトとテスト対象プロジェクトのターゲットフレームワークが異なっている場合はこんなエラーが出る。 (4.6.2の場合 解決方法 例えばテストしたいプロジェクトのフレームワークのversionが<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />の場合。…
はじめに 変更しやすいコードが書けないのにソフトウェア開発とか舐めているのですか 天使様1ごめんなさい〜、nikkieです 「かわいい」と技術書が夢の合体を果たした、ちょうぜつ本(『ちょうぜつソフトウェア設計入門』)!🤗 読書会と絡めて読み進めており、今回は第6章「テスト駆動開発」の6.6を写経しつつ読みました。 目次 はじめに 目次 前回のちょうぜつ本! 仕様変更を考慮したFizzBuzz TDDでジェネリックFizzBuzz シンプルさ 終わりに P.S. 9/22(金) 第6章「テスト駆動開発」後半のちょうぜつ本_読書py! 前回のちょうぜつ本! いわしまんさんの書評エントリがきっかけで…
はじめに 変更しやすいコードが書けないのにソフトウェア開発とか舐めているのですか 天使様1ごめんなさい〜、nikkieです 「かわいい」と技術書が夢の合体を果たした、ちょうぜつ本(『ちょうぜつソフトウェア設計入門』)!🤗 読書会と絡めて読み進めており、今回は第6章「テスト駆動開発」の6.5を写経しつつ読みました。 写経しながら思ったこと2をアウトプットしていきます 目次 はじめに 目次 前回のちょうぜつ本! はじめてTDD 〜FizzBuzzを例に〜 写経ログ Red-Green-Refactorのサイクルじゃないんだ 最小限の実装 実はBDDだったのです! 終わりに P.S. 9/22(金)…
実行環境 .NET 8 Visual Studio 17.8.3 xUnit 2.4.2 準備 ASP .NET Core WebAPIのプロジェクトとユニットテストのプロジェクトを作成し、ユニットテストのプロジェクトからWebAPIのプロジェクトを参照するように設定しておきます。 また、Program.csはトップレベルステートメントで書かれていてclassの記述が省略されています。classのアクセス修飾子がpublicになっていないので、public partial class Program{}という記述を追加します。 var builder = WebApplication.Crea…
参考サイト xunit.net learn.microsoft.com github.com iiweis.net www.nextdoorwith.info blog.beachside.dev Assert一覧 値が等しいか(Assert.Equal) 値が厳密に等しいか(Assert.StrictEqual) 値が等しくないか(Assert.NotEqual) 値が厳密に等しくないか(Assert.NotStrictEqual) 同一インスタンスか(Assert.Same) 同一インスタンスでないか(Assert.NotSame) オブジェクトが同等か(Assert.Equivalent…
はじめに 「頑張れ!」ってきっと 愛してるって言葉♪ nikkieです 2/11のPHPカンファレンス2024登壇1準備より1ネタ。 PHPUnitのドキュメントのTest Doubleを読んだところ、モックについて気づきがありました。 目次 はじめに 目次 PHPUnitのドキュメント「6. Test Doubles」 『xUnit Test Patterns』で整理された語彙が前提 注:xUTPはテストを4つのフェーズで見る Test Doubles(広義のモック) Test Stubs Mock Objects(狭義のモック) 感想:広義のモックと狭義のモック 終わりに PHPUnitの…
目次 目次 環境 xUnitTestCodeSnippets Chainning Assertion Xunit.SkippableFact XMLUnit 環境 Visual Studio 2022 xunit 2.4.2 xUnitTestCodeSnippets ショートカットテキストを入力して、Tabキーを2回入力するとコードのテンプレートが挿入される。 よく使うショートカットテキスト xtestc xtesm or fact theory afact atheory github.com xunit-testmethod.snippet をダウンロードする。 ツール > コードスニペ…
これの続き 今度は、とりあえず単体テストが動くようになるまでをやっていく 単体テストを追加 ソリューションを右クリックし、「追加」 > 「新しいプロジェクト」を選択 MSTest、NUnit、xUnitとかある。 どれ使えばいいのかわからん。 Bingチャットに相談してみて、「ユニットテストの基本的な概念は同じであるため、一つを学べば他のフレームワークも理解しやすくなるし、とりあえずどれでもいいと思うよ。」という結論になり、MSTestで行くことにした。 Testプロジェクトの名前は"DatabaseOperationTests"にしとく。 メインプログラムのプロジェクトの名前を"SQLDB_…
目次 目次 検証環境 パス Util Highlight / Highlightif Dif Snapshot HorizontalRun / VerticalRun Pivot Merge Image RawHtml WithStyle HtmlHead InvokeScript DisplayWebPage ToCsvString WriteCsv SyntaxColorText ReadLine AutoScrollResults SaveString/LoadString, SaveBytes/LoadBytes SetPassword/GetPassword Break Progre…
この記事はBASE アドベントカレンダー 2023の24日目の記事です。 基盤グループ エンジニアの田中 (@tenkoma) です。 2023年5月から8月にかけて、書籍「単体テストの考え方/使い方」の読書会を社内有志でしました。 読書会の様子や感想をまとめます。 書籍「単体テストの考え方/使い方」について 単体テストの考え方/使い方 プロジェクトの持続可能な成長を実現するための戦略 | マイナビブックス 単体テストの考え方/使い方 プロジェクトの持続可能な成長を実現するための戦略 | 達人出版会 2022年12月に出版されました。 2020年1月に出版されたUnit Testing Pri…
単体テストの考え方/使い方作者:Vladimir Khorikovマイナビ出版Amazon 優れたテストスイートの特徴 テストすることが開発サイクルの中に組み込まれている コードベースの特に重要な部分のみがテスト対象となっている 最小限の保守コストで最大限の価値を生み出すようになっている いつかの職場で部長が、 全てフルパス、テストコード書くべきだよね みたいなことを言っていたのを思い出します。無理です。 古典学派とロンドン学派 これ、言葉で説明するのは難しいですね。 ぼくはどちらかというと古典学派です。 ロンドン学派はテストしたいクラスが依存するクラスはモックにすることになり、かなり厳密です…
今回は.NET 6以降、MAUI世代のユニットテストに使えるデバイステストランナーについて紹介します。 動機 Xamarin.Forms世代の頃には、古い内容のままでしたが一応ユニットテスト用のプロジェクトテンプレートが存在していました。しかしこれは.NET 6以降のiOS, Androidアプリに対応していないため乗り換える必要がある、というお話です。 xUnit向け、NUnit向けと1つずつ紹介します。 デバイステストテストランナーとは? ここではiOS, Androidアプリ上で実行するテストを"デバイステスト"(Device Tests)と呼びます。 テストランナーについては、xUni…
ちょっと作りたいアプリがあり、フロントどうしようかと。 VueやReact、どれも一から学習で、どれ使おうか迷っていたのですが、なんとなくBlazorにしてみようと で、DevOpsに関することも学習していきたいので、単体テストも自動化したいと。 なので、書き方とか含めそもそもどうやって作っていくのかもが一緒に学習してみようと思っていまして とりあえず、Visual Studioで作成されるBlazorのサンプル?アプリを題材に簡単な単体テストを作ってみようと ChatGPTにおんぶにだっこで進める。 Blazor WebAssemblyの ASP.NET Core Hostedなし(バックエ…
Agile Journeyをご覧のみなさん、はじめまして。川口恭伸(@kawaguti)と申します。 私はアジャイル開発やスクラムに関する知識を提供し、モダンなソフトウェア開発の要素の研究、プロダクト開発の進め方やチームの目標設定など、さまざまな領域でのコンサルティングを手掛けています。 また、アギレルゴコンサルティング株式会社においてシニアアジャイルコーチとして活動しており、一般社団法人スクラムギャザリング東京実行委員会と一般社団法人DevOpsDays Tokyoの代表理事も務めています。さらに、コミュニティ活動としては、毎週水曜日に品川アジャイルに参加しており、RSGT、スクラムフェス、…
ScalaTestでどのようにテストを記述するのかを学習したため、メモ的に記事に内容を残します。 目次 テストの実行(sbt) testタスク testOnlyタスク テストの記法 FunSuiteスタイル FlatSpecスタイル FunSpecスタイル WordSpecスタイル アサーション(Assertions) assert assertResult assertThrows intercept succeed/fail マッチャー(Matchers) 等価性 より大きい・小さい ある数から一定の範囲内 サイズ・長さ Booleanプロパティ 参考文献 テストの実行(sbt) test…
はじめに Rat A Tat!!! nikkieです。 先日ちょうぜつ本でFizzBuzzをテストファーストで実装しました(BDD)。 同じ題材をt-wadaさん(国内でTDDの第一人者と勝手に思ってます)がライブコーディングされていたのを思い出し、視聴 & ペアプロのように写経してみました。 目次 はじめに 目次 TDD Boot Camp 2020 Online #1 お題をTODOリストに変換 1周目:最小限の実装(仮実装) 2周目:三角測量 3周目:仮実装だが、三角測量を経ない 4周目:明白な実装 ライブコーディングのまとめ 終わりに TDD Boot Camp 2020 Online…
アジャイルソフトウェア開発手法の先駆けともいえるXP(eXtreme Programming)の名を冠して2002年から20年以上にわたり毎年開催されているXP祭り。2023年はオンラインの講演とオンサイトでのワークショップによるハイブリッド形式で、9月30日(土)に開催が予定されています。 ▶ XP祭り2023 - xpjug.com/xp2023/ コミュニティ主体によるカンファレンス開催が国内でまだ珍しかったころにスタートし、企業によるスポンサードもほぼなく、参加費も登壇料も全て無料、セッションだけでなくスタッフも毎年公募して入れ替える素朴な運営を続けながら、和田卓人さんや平鍋健児さんと…