2

Mule フローとプロセッサのテストケースを書き始めました。

この一環として、「setUp」メソッドでプロパティ「mule.test.timeoutSecs」を設定して、各テスト メソッドに時間がかからないようにしました。

しかし、これはいくつかの紛らわしい結果を示しています。

プロパティを 3 秒に設定しました。

最初のテスト メソッドは 9 秒以上実行されましたが、まだ成功しています。

2 番目の方法は、3000 ミリ秒後にタイムアウトする方法です。

3 番目のテスト メソッドが例外のスローに失敗しました

org.mule.retry.RetryPolicyExhaustedException: Could not create Transport. Reason: javax.management.InstanceAlreadyExistsException: org.apache.activemq:BrokerName=localhost,Type=Broker
at org.mule.retry.policies.AbstractPolicyTemplate.execute(AbstractPolicyTemplate.java:105)
.....
Caused by: javax.jms.JMSException: Could not create Transport. Reason: javax.management.InstanceAlreadyExistsException: 

4 番目の方法は、3000 ミリ秒後にタイムアウトする方法です。

ここで何か不足している場合はお知らせください。

以下の画像は、各テストメソッドにかかった時間とともにテストの概要を示しています。

テスト実行のスナップショット

4

2 に答える 2

3

テスト クラス コンストラクターまたは静的メソッドorg.mule.tck.junit4.FunctionalTestCaseのいずれかでセットを使用する場合。mule.test.timeoutSecs@BeforeClass

于 2013-02-21T17:46:50.320 に答える
1

Eclipse では、そのテストに費やされた時間にセットアップ/ティアダウンに費やされた時間が含まれます。@Before/がある場合@Afterは試験時間に含まれます。したがって、最初のテストに時間がかかるセットアップがある場合は、これが含まれます。

ただし、タイムアウトはテスト メソッド自体にのみ適用され、@Before/には適用されません@After

BeforeClassまた、 / this がある場合は IIRC もAfterClass時間に含まれます (ただし、最初/最後のテストのみ)。

これをテストするには、テストに次の行を追加します。

@Test public void testMe() {
  long now = new Date().getTime();

  // test
  System.out.println("time taken =" + (new Date().getTime() - now) + " millis");
}

これにより、費やされた時間が本当に@Before/にあるかどうかがわかります@After

于 2013-02-21T16:50:26.867 に答える