2016-03-22 10 views
5

私はModelicaでコンポーネントのライブラリを作成していますが、パッケージを単体テストするためのテクニックについてのご意見をお待ちしております。ユニットテストModelicaコンポーネントライブラリ?

これまでのところ、コンポーネントごとに1つずつ、一連​​のモデルで構成されるテストパッケージが用意されています。各テストモデルは、コンポーネントをインスタンス化し、それを必要な入力と出力を提供する非常に単純なヘルパークラスに接続します。

OMEditorで対話的にそれを使用するときにこれが正常に動作しますが、私は

私は.mosスクリプトを書き始めるべき、または別のがある/より良いなどの合格/不合格の基準により自動化ソリューションを探しています方法?

ありがとうございました。

+0

[jModelica](http://www.jmodelica.org/api-docs/compliance_diagnostics/1.17/check /index.html)は、そのバージョンが単体テストを実行する良い方法を表しているかどうかをチェックしますが、どうやってこれを行うのですか?おそらく、PythonスクリプトとFMUのチェックを介してですか? –

+0

ダッソーがModelica 2017会議で発表した素晴らしいプレゼンテーションは次のとおりです。https://modelica.org/events/modelica2017/documents/3ds_TestingTutorialSlides.pdf – matth

答えて

5

私は、赤血球上の

ありません彼らがそれをやっているかのアイデア。明らかに、過去の結果が保存された状態で回帰テストが行​​われますが、それがいくつかのテストライブラリか自作であるかどうかはわかりません。一般的に


、私はテストソリューションの誰もが/(Pythonの生態系における参照例えば鼻やpytest)を使用する必要がありますすることができ、「1」は存在しないことを、次善の/それはちょっと悲しい見つけ、代わりに誰もが思えます彼ら自身の解決策を調理する(または試みる)ためには、Modelicaカンファレンスペーパー(しばしば実装の痕跡がない)または不明な状態のライブラリの維持されていないものがあります。私の頭の上オフ

は、私が見つかりました/

  • OM testing
  • JModelica testing(一部すでにここでは他の回答にリンク)のノウハウは、(コンパイルエラーのためだけのテストに思える?)
  • Xogeny test (図書館自体の一部のテストは私のために失敗します。多分OneWind/OneModelica中)
  • UnitTesting(XogenyTestの前身の明らかにいくつかの種類また、ノーソース/ - ?。また、フラウンホーファーによって何か、と公に入手できない(
  • MoUnit)テストランナーを含めていないようです実装見つかっ)
  • Optimica Testing Toolkit(とりわけregression testingのため明らかにcommercial product by Modelon
  • SystemModeler VerificationTest
  • buildingspy Pythonパッケージ、。 Berkeley Modelica Buildings Libraryの傘の下にあります。 (Dymolaのみのシミュレーション)
  • Modelica_Requirementsライブラリ - シミュレーションの要件を定義します。
  • (オープンソースおよび実装されますが、どこにも明らかにできないことを主張)...私はそこに多くの私が忘れているあるか。これはhttps://xkcd.com/927/の病理学的なインスタンスのように思える

の知りません確信しています。

(実際のテストではなく、関連性があります:ANTLRを使用した解析と意味分析(非実用的なものではありません) :modelica.org/events/Conference2003/papers/h31_parser_Tiller.pdf)

+0

私は、私たちのライブラリのための社内ユニットテストプラットフォームを作りました。それはopenModelica hudsonと非常によく似ています。テキストテンプレートを使ってmodelicaスクリプトを生成し、テスト結果をJUNIT xml形式に解析しました。 Dymolaでは、pythonスクリプトやjavascriptからのバッチ呼び出しや直接API呼び出しから直接.mosスクリプトを実行できます。さらなる詳細に興味があるなら私に電子メールを撃つ、私はいくつかの議論が私のものをよりよいプラットフォームにすると信じている。 –

+2

非常に詳細なリスト - ありがとう!私は、これに対処する一般的な解決策(または解決策のクラス)がないことは残念だということに同意します。私は、.NET/C#の世界で多くの仕事をしています。そこには、同じパターンに従う多くのテストソリューションがあります:xunit、nunitなど、VS統合テストランナーと自動ビルドサポート。 Modelicaには好きなことがたくさんありますが、良いdevopの欠点は私にとって大きなマイナスです。 –

+0

Modelicaのユニットテストとプロジェクト全体の実装のもう1つの例は、ローレンスバークレー国立研究所の[Buildings Library](https://github.com/lbl-srg)です。それをリストに追加するとよいでしょう。 –

3

.mosスクリプトを書くことも一方の方法ですが、マイケルティラーの小さな概念実証ライブラリ:XogenyTestもあります。これは基本として使用できます。

+1

マイケルティラーの何かを見てみる価値があります。 –

+0

ええ、このライブラリはコミットがほとんどなく、3年後に更新されていないという事実は、実際にはうまくいかなかったと思います(そうでなければ人々はそれを採用したでしょう)。 :/ – Christoph

+0

クリストフ、それは単に概念の証明として行われ、おそらく完全なプロジェクトであることを意図しない。それでも役に立つとは限りません。 –

2

私は.mosスクリプトを使用する方が好きです。テストフレームワークを継続的な統合ツールに統合すると、かなりうまく機能します。 BuildingPyはこれの良い例ですが、CIツールでは実装されていませんが、それでも優れたツールです。ここで

は、優れたフレームワークの設計のリファレンスです: UnitTesting: A Library for Modelica Unit Testing

+0

リンクをありがとう - 私は閲覧します。 –

1

あなたはMathematicaとSystemModelerを持っている場合は、Mathematicaからシミュレーションを実行し、テストにVerificationTest「機能」を使用することができます VerificationTest[Abs[WSMSimulate["HelloWorld"]["x", .1] - .90] < .01]

TestReport[]で複数のテストをシミュレートできます。

関連する問題