単語、フレーズ、ウェブページを日本語から 100 以上の他言語にすぐに翻訳できる Google の無料サービスです。
単語、フレーズ、ウェブページを日本語から 100 以上の他言語にすぐに翻訳できる Google の無料サービスです。
LaravelのUnitTestでテスト時はデータベースを切り替える LaravelでUnitTestしたとき通常使用しているデータベースとテスト用のデータベースの切り替え方法をご紹介します。 投稿日2018年09月06日 更新日2018年09月06日 データベースのコンフィグファイルにテスト用のコネクションを設定しましす。 ここではsqliteを使用します。databaseディレクトリにtest.sqliteを作成しておきます。 config/database.php 'connections' => [ // ... 'testing' => [ 'driver' => 'sqlite', 'database' => database_path('test.sqlite'), 'prefix' => '', ], ], 次にテスト用のenvファイルを新たに作成します。 DB_CONNE
こんにちは、コウキです。 mockとは、関数やクラスの機能を置き換えるもののことです。 テストコードを書くときによく使います。 テストのときだけ、この関数は常に1を返すようにしよう! みたいなことができるようになります。 こうすれば、他の関数の影響を受けずに関数をテストする事ができます。 mockでできること mockを使うとこんな事ができます。 関数の戻り値を変える 関数から例外を投げる 関数が呼ばれた回数をカウントする 関数が受け取った引数を記憶する mockのインポート mockは最初から入っているので、importするだけで使えます。 from unittest import mock mockオブジェクトの作成 mockオブジェクトを作成する場合は、with文を使ったり、デコレータを使うのが一般的です。 今回はこの2つのやり方のみ扱います。 ちなみに、mockに置き換えられた関数
これは簡単な例ですが、問題をわかりやすく説明しています。MC / DCカバレッジを考慮するなら、コードを適切にカバーするには4つのテストが必要です。行カバレッジなら、この半分の時点で100%となったでしょう。MC / DCの価値についての詳しい説明は、別の機会に譲りたいと思います。ここでのポイントは、どのような方法でカバレッジを測定するにしても、アサーションによって何を検証するのかが意味を持つということです。 無意味な自動生成 多くの人が陥るもう1つの罠は、簡易的なツールを使用してユニットテストを自動的に生成することです。 シンプルなテスト生成ツールは、アサーションなしでコードを実行するテストを作成します。これはテストにノイズが入るのを防ぎますが、このようなテストで実質的にわかるのは、アプリケーションがクラッシュしないことだけです。残念ながら、アプリケーションが想定された処理を実行している
「単体テスト」再入門! 開発の現場でバグを確実に洗い出す最適な手法と、テストケースの作り方 単体テストの定義から手法、未来の展望までを、日本におけるソフトウェアテストの第一人者・高橋寿一さんが解説します。 ソフトウェアのテストにおいて、最初のフェーズである単体テスト。若手Webエンジニアの中には、いきなり単体テストを任されて戸惑った方もいるでしょう。仕方なく現場で踏襲されているやり方に従っているだけ、ということもあるのではないでしょうか? 今回は、単体テストの定義から手法、未来の展望までを、日本におけるソフトウェアテストの第一人者・高橋寿一さんが解説します。 単体テストとは(各社ばらばらな単体テストの定義を再定義) コードベースの単体テスト 命令網羅(C0カバレッジ) 分岐網羅(C1カバレッジ) よくある(コードベースの)単体テストの間違い 機能単位の単体テスト 例:複雑なソート機能のテス
{ "name": "fizzbuzz_tester", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "test": "jest" }, "author": "", "license": "ISC", "devDependencies": { "jest": "^24.1.0", } } これだけで十分です。でもESLintとPrettierは入れておきましょう。速度重視で雑に書いても整形してくれるのが便利すぎてもう戻れない。 仕様を決める コードを書く前に、まずは仕様を決定しましょう。今回はみんな大好きFizzBuzzを作るとします。 1~100までの整数を1から順番に出力する 整数が3の倍数のとき、整数の代わりにFizzを出力する 整数が5の倍数のとき、整数の代わりにBuzzを出力する 整数
テスト駆動開発 (Kent Beck(著)、和田 卓人(翻訳)、オーム社)の第Ⅲ部(テスト駆動開発のパターン(Patterns for Tejst-Driven Development))、第26章(レッドバーのパターン(Red Bar Patterns))をJavaではなくGo言語で取り組んでみる。 コード sample_test.go package sample import ( "fmt" "testing" ) func TestReducer(t *testing.T) { reducer := newReducer(newPolygon()) got := reducer.result().npoints want := 0 if got != want { t.Errorf("reducer.result().snpoints got %v, want %v", got,
extension PrefExtension on Pref { bool get contains => _prefs.containsKey(name); Future<bool> get remove => _prefs.remove(name); Future<bool> set<T>(T value) { if (T == String) { return _prefs.setString(name, value as String); } else if (T == int) { return _prefs.setInt(name, value as int); } else if (T == double) { return _prefs.setDouble(name, value as double); } else if (T == bool) { return _pr
ReSharperはNUnit、xUnit.net、MSTest、QUnitおよびJasmineに基づいたユニットテストの 実行やデバッグに役立つユニットテストランナーを提供しています。 テストを調査し、それらをさまざまな方法でグループ化し、個別のセッションに分解し、テスト結果を確認して、スタックトレースからソースコードに移動できます。 ReSharper Ultimateをお使いいただくと、継続的にテストを実行し、テストのカバレッジとパフォーマンスを評価できます。 ReSharper は .NETと .NET Core プロジェクトの NUnit、XUnit、MSTest のフレームワークを自動検出します。 MSpecなどのその他のユニットテストフレームワークは、ReSharperプラグインを介してサポートされています。 ReSharperは、テストクラスや単体テストの宣言部の横に専用の
アドベントカレンダーの5日目当番のQAグループ @takashios です。 新プロジェクトは、従来のプロジェクトよりも進化したやり方でテストケースが作成されていますので、簡単に紹介します。 1. ツールが新しい 元々はQAメンバー全員でTestlinkを使っていたのですが、使いにくいという声もあり廃れてしまいました。 そこで、新プロジェクトの始動を機に、便利そうなツールに変えてみました。 今の新プロジェクトではコレを使っています。 TestRail(テストケースを書き溜めるところ。テスト実行でも使用する。レポート機能は…使いこなしたい) スプレッドシート(主に、テストパターン検討やデシジョンテーブルに使用) Redmine(Bugを報告するところ。TestRailと連携させている) 2. テスト駆動開発 今までの仕様説明は開発チームと同じタイミングで受けてましたが、現在はテスト駆動開発に
テスト駆動開発 (Kent Beck(著)、和田 卓人(翻訳)、オーム社)の第Ⅱ部(xUnit(The xUnit Example))、第20章(後片付け(Cleaning Up After))をPythonではなくGo言語で取り組んでみる。 コード package main import ( "fmt" "os" ) // TestCase ... type TestCase struct { name string } // NewTestCase ... func NewTestCase(name string) *TestCase { return &TestCase{name: name} } // WasRun ... type wasRun struct { *TestCase wasRun bool log string } // newWasRun ... func ne
テスト駆動開発 (Kent Beck(著)、和田 卓人(翻訳)、オーム社)の第Ⅱ部(xUnit(The xUnit Example))、第21章(数え上げ(Counting))をPythonではなくGo言語で取り組んでみる。 コード package main import ( "errors" "fmt" "os" ) // TestCase ... type TestCase struct { name string } // NewTestCase ... func NewTestCase(name string) *TestCase { return &TestCase{name: name} } // WasRun ... type wasRun struct { *TestCase wasRun bool log string } type testResult struct {
unittest.mock モジュールを正しく使って関数を置き換えるというのは以外と難しいもので、Pythonの名前空間について、しっかり把握できてないとうまくいかないことがある。 単純なケースでは、テスト対象のコードが参照している名前で置き換えてやればいい。 例えば import spam def ham(): spam.egg() というモジュール M の ham() をテストするために spam.egg を置き換えるなら def test(): import M with patch("spam.egg"): M.ham() となる。また、 from spam import egg def ham(): egg() のように egg を参照している場合、ham() の内部での egg は M.egg への参照なので def test(): import M with patch("M
テスト駆動開発 (Kent Beck(著)、和田 卓人(翻訳)、オーム社)の第Ⅰ部(多国通貨(The Money Example))、第7章(疑念をテストに翻訳する(Apples and Oranges))をJavaではなくGo言語で取り組んでみる。 コード money_test.go package money import "testing" func TestDollarTimes(t *testing.T) { five := NewDollar(5) tests := []struct { m int want Dollar }{ {2, NewDollar(10)}, {3, NewDollar(15)}, } for _, test := range tests { got := five.Times(test.m) want := test.want if !got.Eq(
要望 自作のjQueryプラグインの単体テストをしたい。 DOMと密接に結びついているので、JSファイル単体ではなく、HTMLファイル全体としてテストしたい。 ブラウザとコマンドラインの両方でテストしたい。 カバレッジも取得して、結果をHTMLに出力したい。 実現 簡単な例をGitHubで公開しています。 - JavaScriptのみ: https://github.com/sutara79/demo-qunit - PHPも一緒に: https://github.com/sutara79/jq-plugin-template (フォーク元 https://github.com/thorst/Code-Coverage-Qunit ) ブラウザで実行 https://sutara79.github.io/demo-qunit/test/ ユニットテストのみ、可能です。 コマンドラインで実行
本稿における「単体テスト」とは自動テストにおける単体テストを指します。手動テストのことではないので、ご了承ください。 単体テストの考え方/使い方という本を読みました。筆者自身、「単体テストはプロダクションコードの付属」という意識がどこかにありました。この本を読んで、単体テストについてあまりに何もわかってなかったことに気付かされ、単体テストの設計はプロダクションコードの設計と同じくらい重要という意識に変わりました。何のために単体テストをやるのか、いいテストとは、「単体」とは、など多くの点で学びを得られ、また、多くのプラクティスとアンチパターンを知ることができました。 本稿はこの本を読んで得られた学びを、フロントエンド開発、特にコンポーネント開発に適用することを試みた際のまとめです。より詳細な解説を求む方には本を手に取ってもらう前提で、できるだけポイントを抑えられるようにまとめることを目指しま
テスト駆動開発 (Kent Beck(著)、和田 卓人(翻訳)、オーム社)の第Ⅰ部(多国通貨(The Money Example))、第11章(不要になったら消す(The Root of All Evil))をJavaではなくGo言語で取り組んでみる。 コード money_test.go package money import "testing" func TestMoneyTimes(t *testing.T) { five := NewMoneyDollar(5) tests := []struct { m int d Money }{ {2, NewMoneyDollar(10)}, {3, NewMoneyDollar(15)}, } for _, test := range tests { got := five.Times(test.m) want := test.d if
テスト駆動開発 (Kent Beck(著)、和田 卓人(翻訳)、オーム社)の第Ⅲ部(テスト駆動開発のパターン(Patterns for Tejst-Driven Development))、第32章(TDDを身につける(Mastering TDD))、どのくらいフィードバックが必要かをSmalltalk、Java、PythonではなくGo言語で取り組んでみる。 コード triangle_test.go package triangle import ( "errors" "fmt" "testing" ) func TestEvaluate(t *testing.T) { tests := []struct { desc string a, b, c, n int err error }{ { "Equilateral", 2, 2, 2, 1, nil, }, { "Isosceles"
Mason とは、コード生成を自動化してくれるツールのことです。 Dartで作成されており、オープンソースのツールとなっています。 例えば、Flutterのコードを書く際に、 新しいファイルにStateless Widget 用意することがあるかと思います。 新規ファイル作成 →StatelessWidgetを作成 →名前の書き換え →material.dartのimport という作業を、ファイルを作る度に行う訳です。 これって面倒ですよね。 これをコマンド一発で自動で生成してくれるのがMason (Mason CLI) です。 Mason ではbricks と呼ばれるテンプレートを登録しておくことで、 自動的にコード生成することが可能となります! 自動化により、 コピペミス、打ち間違いによるエラーの減少作成時間の短縮 を見込む事ができます。 作業の効率化に役立つとても良いツール、それが
PHPunit10以降ではDataProvider関数はstaticが推奨になりました。 https://docs.phpunit.de/en/10.5/writing-tests-for-phpunit.html#data-providers staticなので $this を使ったテストクラスの状態を参照できなくなります。 そもそもDataProviderはテストケース実行前に呼ばれるため、setUpで作成したデータを参照できません。 class ExampleTest extends TestCase { private int $expectValue; protected function setUp(): void { parent::setUp(); echo "setUp called\n"; $this->expectValue = random_int(0, 9); }
テスト駆動開発 (Kent Beck(著)、和田 卓人(翻訳)、オーム社)の第Ⅰ部(多国通貨(The Money Example))、第3章(三角測量(Equality for All))をJavaではなくGo言語で取り組んでみる。 コード money_test.go package money import "testing" func TestMultiplication(t *testing.T) { five := NewDollar(5) tests := []struct { m, want int }{ {2, 10}, {3, 15}, } for _, test := range tests { got := five.Times(test.m).amount want := test.want if got != want { t.Errorf("five.Times(
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く