如何将JUnitPerf与JWebUnit和JUnit 4一起使用?

时间:2020-12-14 11:50:41

I have a series of functional tests against a web application that correctly run, but each require the class level setup and teardown provided with the @BeforeClass and @AfterClass annotations, and hence require JUnit 4.0 or above.

我对正确运行的Web应用程序进行了一系列功能测试,但每个都需要使用@BeforeClass和@AfterClass注释提供的类级别设置和拆卸,因此需要JUnit 4.0或更高版本。

Now I want to perform load testing using a small number of these functional tests, which simulate a large number of users requesting the related page of the web application. In order for each user to have their own "simulated browser" in JWebUnit, I need to use a TestFactory in JUnitPerf to instantiate the class under test, but since JUnit 4 tests are annotated with @Test instead of being derived from TestCase, I'm getting a TestFactory must be constructed with a TestCase class exception.

现在,我想使用少量的这些功能测试来执行负载测试,这些测试模拟了大量请求Web应用程序相关页面的用户。为了让每个用户在JWebUnit中拥有自己的“模拟浏览器”,我需要在JUnitPerf中使用TestFactory来实例化测试中的类,但由于JUnit 4测试是使用@Test注释而不是从TestCase派生的,所以我'获取TestFactory必须使用TestCase类异常构造。

Is anyone successfully using JUnitPerf and its TestFactory with JUnit 4? And what is the secret sauce that lets it all work?

是否有人成功使用JUnitPerf及其TestFactory与JUnit 4?什么是让它全部工作的秘诀?

1 个解决方案

#1


10  

You need a JUnit4 aware TestFactory. I've included one below.

您需要一个知道JUnit4的TestFactory。我在下面加了一个。

import junit.framework.JUnit4TestAdapter;
import junit.framework.TestCase;
import junit.framework.TestSuite;

import com.clarkware.junitperf.TestFactory;

class JUnit4TestFactory extends TestFactory {

    static class DummyTestCase extends TestCase {
        public void test() {
        }
    }

    private Class<?> junit4TestClass;

    public JUnit4TestFactory(Class<?> testClass) {
        super(DummyTestCase.class);
        this.junit4TestClass = testClass;
    }

    @Override
    protected TestSuite makeTestSuite() {
        JUnit4TestAdapter unit4TestAdapter = new JUnit4TestAdapter(this.junit4TestClass);
        TestSuite testSuite = new TestSuite("JUnit4TestFactory");
        testSuite.addTest(unit4TestAdapter);
        return testSuite;
    }

}

#1


10  

You need a JUnit4 aware TestFactory. I've included one below.

您需要一个知道JUnit4的TestFactory。我在下面加了一个。

import junit.framework.JUnit4TestAdapter;
import junit.framework.TestCase;
import junit.framework.TestSuite;

import com.clarkware.junitperf.TestFactory;

class JUnit4TestFactory extends TestFactory {

    static class DummyTestCase extends TestCase {
        public void test() {
        }
    }

    private Class<?> junit4TestClass;

    public JUnit4TestFactory(Class<?> testClass) {
        super(DummyTestCase.class);
        this.junit4TestClass = testClass;
    }

    @Override
    protected TestSuite makeTestSuite() {
        JUnit4TestAdapter unit4TestAdapter = new JUnit4TestAdapter(this.junit4TestClass);
        TestSuite testSuite = new TestSuite("JUnit4TestFactory");
        testSuite.addTest(unit4TestAdapter);
        return testSuite;
    }

}