いつ、どのように単体テストのコードジェネレータ?
-
08-06-2019 - |
質問
このことは難しいと期限をうかがうと思って定められているので注意が必要で、床を見なたが興味深い。
私は開発コードジェネレータが当社のpythonインターフェースを当社のC++コードで発生しているSWIG)を生成するコード必要がある場所には置かないでくださいとwebサービス.私は開発コード"とか"また戻ってしまった利用TDDものがその場で発音を確認することが受験も可欠だ。がそれぞれの試験的にも確認するために与えられたビットの入力コード(させることができることへのC++ヘッダー)さんは、与えられたビットの出力コードを書いた小型エンジンを読み込み試験を定義XML入力ファイルを生成するテストケースからこれらの期待に応えます。
問題は、いニーズが高く、具体的な方法を以下に示す。このユニットテストと自体は:複合体、およびb:欠点を持つ。
ことにみんなで考えて代替的アプローチはこの問題に対し、襲っしゃいましたら、お教え下さいかに取り組むかを正しく行えるかどうかである。かも必要なのは結果、IE:のコード生成の実際の運用がないので、のではなく、は、コードの見方をしたいということです。
でも、未経験のものに似たこのよう注意す。
解決
作成を始めましたが、概要タワーオブセブンコーツとポメラ自分のコード生成器、その後、再読み込みお問いった既に触れ、同じ問題を自分自身の視点からの実行結果ではなく、コードのレイアウトを/です。
問題は、これは難しい試験、生成したコードがないことに適した実際の環境は単体テストシステム、また、どのようにエンコードに期待される成果?
がその場で発音を確認することができ破り、コードジェネレータよび単体テストです。ユニット試験フルコードジェネレータは統合テスト以外部試験の場合はなるか、私にお尋ねください。
他のヒント
リコールが"ユニットテスト"の一種。対応することができるでしょうユニットテスト 内部 片的なヘルプオーサリング-ツール装置です。いっちがここで見ていると、システムレベルの検査。k.a.回帰テスト).だけではないので意味...が異なる考え方、アプローチへの期待など。あまりの作業ができるので,それの設end-to-endの回帰テストスイー:固定C++ファイル->SWIGンインタフェース->pythonモジュール->既知の出力に出力します。またチェックの入力固定C++のコード)対予想出力(何が出るかの最終的なPythonプログラム)チェックのコードジェネレータ結果はそのようなもの差分をオブジェクトファイル...
あり、結果のみのものを始めとしたブースがあります。の答書の枠組みることで発生するコードの独立性を確保する...お時間をお過ごします。
る場合にはon-nuxあると考えダンピングは、unittestの枠組みの中でも非常に高い評価を受け、bashスクリプトやmakefile.windowsの場をつくることも検討するシェルプ/機能の発生装置およびそれをコードして別のプロセス)は、unittestます。
第三のオプションのコードをアプリからのこだわりとそのものであり、unittest.再びする必要があり、シェルスクリプトwhatnotンロード毎に入力します。どのようにエンコードの行動で発生したことをきっとほとんど同じように使いのC++コードで、生成された界面ではなく、C++です。
<url> <url> <url> <url> <url> <url> <url> <url> <url> <url>を指摘できるものを細粒度中の試験の結果を検証する:テストできます。個々のチャンクのコードによるネストして内部の設定-検証コード:
int x = 0;
GENERATED_CODE
assert(x == 100);
すて生成したコードを組み立てからの小さな塊のチャンクが変わらないの頻度で行使することができますので、より条件及び試験のような全ての試験休みを変更した場合の具体的な一chunk.
ユニット試験はその試験は特定のユニットです。その場合は書き仕様クラスAのですがクラスAは実際のコンクリートバージョンのクラスB、C
Okに気付いたので、その後、タグはこの問題を含むC++/Pythonの原則をテートメントは同じになります。
public class A : InterfaceA
{
InterfaceB b;
InterfaceC c;
public A(InterfaceB b, InterfaceC c) {
this._b = b;
this._c = c; }
public string SomeOperation(string input)
{
return this._b.SomeOtherOperation(input)
+ this._c.EvenAnotherOperation(input);
}
}
で上記のシステムを混インタフェースシステムB,Cできる単体テストだけでシステム、リアル機能により実行されるその他のシステム。このユニットテスト。
ここにはなにが差し迫っている場合にはシステムから作成を完了し、異なる時の仕様、それぞれの挙動
public class When_system_A_has_some_operation_called_with_valid_input : SystemASpecification
{
private string _actualString;
private string _expectedString;
private string _input;
private string _returnB;
private string _returnC;
[It]
public void Should_return_the_expected_string()
{
_actualString.Should().Be.EqualTo(this._expectedString);
}
public override void GivenThat()
{
var randomGenerator = new RandomGenerator();
this._input = randomGenerator.Generate<string>();
this._returnB = randomGenerator.Generate<string>();
this._returnC = randomGenerator.Generate<string>();
Dep<InterfaceB>().Stub(b => b.SomeOtherOperation(_input))
.Return(this._returnB);
Dep<InterfaceC>().Stub(c => c.EvenAnotherOperation(_input))
.Return(this._returnC);
this._expectedString = this._returnB + this._returnC;
}
public override void WhenIRun()
{
this._actualString = Sut.SomeOperation(this._input);
}
}
その結果、単一のユニット仕様で複数の行動の仕様がどの開発ユニットシステムやシステムの場合、試験によりその他のコンクリート内におけるシステムではけっして成功しません。
私のお薦めするアセットの名入力-出力結果など、一部簡単なる場合だき,誠にありがとうござい場合、 単体テストのコード生み出される.すべてを可能にしていますが変更を発生させる装置を正確に文字列が生成が少し異な---もうアカウントを作成するかどうかは解釈されるものとします。この場合試験の結果としているコードなお、まだ成功方法について次のようにしています。
基本的には、何だか自発電機出ますが、ご了承くださいなく物理的試験での組み合わせにも不可).によっているかを確認する発電機を一貫した方法について次のように期待することを感じますが、より良いる成に成功するまで以上に複雑です。
このように、を構築することができますアップスイートの回帰テスト(ユニット試験を必要とする負荷を抑制するための環境保全に正しく.すことが大事だと申し上げましたいの変更は発生しな破壊その他の形態のコードです。きのとの出会いバグがユニット試験なかった獲れたいということなどを防止するため類似の折損する
見ることが必要試験はいかが?発生以上の方を生成します。
私の場合、プログラムを生成し多くの種類のコード(C#、HTML、SCSS、JS等) このコンパイルにサポートも組み込まれています。最良の方法がその場で発音を確認することが削減退バグの全体は、ウェブアプリケーションそのものではなく、試験する装置です。
なく間違っているのは、まだまだユニット試験にチェックの発電機コードが、最大のバングルはUIの試験は、生成されたアプリそのものです。
まだ発生しても素敵な抽象化ではJSで使用できますprogramatically試験のアプリです。このアイデアについてご紹介して: http://code.tutsplus.com/articles/maintainable-automated-ui-tests--net-35089
の大きる、というところでしょう試験システムの端末からのコード生成をいうものであり、一回の試験に失敗した場合、いやすいトラックでの発電機。
すっかり甘いものでした。
幸運を祈っています。