5

ラップトップにローカルにインストールされた MySQL サーバーがあり、その中の情報を単体テストに使用したいので、すべてのデータを自動的に生成するスクリプトを作成したいと考えています。(モデルから) 既にテーブルを生成している MySQL Workbench を使用しています。それまたは別のツールを使用して、自動スクリプトを作成してデータを入力することはできますか?

編集: 明確ではなかったことがわかりました。単体テストに意味のあるデータがあります。「すべてのデータを自動的に生成する」と言ったのは、ツールが現在ローカル DB にある意味のあるデータを取得し、他の開発者の DB で同じデータを生成するスクリプトを作成する必要があることを意味していました。

4

2 に答える 2

1

最も有用な単体テストは、予想されるデータまたは実際に見たデータを反映する単体テストです。スキーマをランダムなビットでいっぱいにすることは、慎重に作成されたテスト データの代わりにはなりません。@McWafflestix が提案したように、mysqldump は便利なツールですが、より単純なものが必要な場合は、CSV からテーブルにデータを入力するINFILE で LOAD DATA を使用することを検討してください。

その他の考慮事項:

  1. 既知の状態のデータベースでテストします。すべてのデータベース インタラクション ユニット テストを、常にロールバックするトランザクションでラップします。
  2. dbunitを使用して同じ目的を達成します。

アップデート

Java 環境にいる場合は、dbUnit が適切なソリューションです。

  1. API を使用して XML 形式でデータをインポートおよびエクスポートできます。これにより、自分のコンピューターからチームの他のメンバーに移動するという問題が解決されます。
  2. データベースの状態を復元するように設計されています。したがって、テストが実行される前にデータベースのスナップショットを作成し、最後に復元します。したがって、テストには副作用がありません (つまり、データを永続的に変更することはありません)。
于 2010-12-18T02:52:04.110 に答える
0

デフォルトを設定できます (定義されている場合)

CREATE TABLE #t(c1 int DEFAULT 0,c2 varchar(10) DEFAULT '-')
GO
--This insert 50 rows in table
INSERT INTO #t( c1, c2 )
DEFAULT VALUES
GO 50

SELECT * FROM #t
DROP TABLE #t
于 2010-12-17T23:33:13.857 に答える