1

ContiPerf 2でおもちゃの単体テストを正常に開発しました。Arquillianの単体テストで同じことを実行しようとすると、ContiPerfアノテーション@PerfTestが機能していないように見えますが、アノテーション@Requiredは正常に機能します。私のテストクラスは次のようになります

@RunWith(Arquillian.class)
public class PerformanceFacadeBeanTest {

    @Rule
    public ContiPerfRule i = new ContiPerfRule();

    @EJB
    private PerformanceFacadeRemote performanceRemote;

    @Deployment
    public static Archive<EnterpriseArchive> createArchive() {
        ...
    }

    @Test
    @InSequence(value=1)
    @PerfTest(invocations = 100, threads = 5)
    @Required(max = 1200, average = 250)
    public void testPerformanceOnCacheLocal() {
    testPerformanceOnCache(performanceLocal);
    }

    private void testPerformanceOnCache(PerformanceFacade performanceFacade) {
    performanceFacade.performOnCache();
    }
}

そして私が得る例外は

org.databene.contiperf.PerfTestExecutionError: org.junit.internal.runners.model.MultipleFailureException: There were 2 errors:
  java.lang.NullPointerException(null)
  java.lang.NullPointerException(null)
    at org.databene.contiperf.util.ContiPerfUtil.executionError(ContiPerfUtil.java:66)
    at org.databene.contiperf.junit.JUnitInvoker.invoke(JUnitInvoker.java:54)
    at org.databene.contiperf.util.InvokerProxy.invoke(InvokerProxy.java:46)
    at org.databene.contiperf.PerformanceTracker.invoke(PerformanceTracker.java:97)
    at org.databene.contiperf.CountRunner.run(CountRunner.java:52)
    at java.lang.Thread.run(Thread.java:722)

何かご意見は?必要に応じて、pom.xmlを投稿できます。

4

1 に答える 1

0

現在、Arquillian で ContiPerf2 を使用することはできません。現在、Arquillian はThreadLocal、ContiPerf ルールによって生成されたスレッドでは使用できないブック キーピング用のインスタンスを使用しています。したがって、NullPointerExceptionArquillian テストランナーは、おそらく 1 つを除くすべてのスレッドで ThreadLocal インスタンスを見つけることができませんでした。Arquillian のこの動作は、将来のリリースで変更される可能性があります。ただし、その領域での約束はありません。

カスタムArquillian拡張機能を介して正しく動作することが報告されているため、今のところJUnitBenchmarksを使用することをお勧めします.

于 2012-11-15T17:25:56.513 に答える