JMeter 5与JUnit 5一起工作吗?

JMeter 5与JUnit 5一起工作吗?,junit,jmeter,jmeter-maven-plugin,Junit,Jmeter,Jmeter Maven Plugin,我在尝试使用jmeter maven插件版本3运行JUnit 5测试套件时遇到问题。测试套件的设置和拆卸阶段根本不被调用。但是,将调用带有@Test注释的方法 我的设置如下: 第一个项目(包含JUnit测试用例) 虚拟测试套件(BasiTest.java): pom.xml文件包含: <dependencies> <dependency> <groupId>org.junit.jupiter</groupId>

我在尝试使用jmeter maven插件版本3运行JUnit 5测试套件时遇到问题。测试套件的设置和拆卸阶段根本不被调用。但是,将调用带有@Test注释的方法

我的设置如下:

  • 第一个项目(包含JUnit测试用例)
  • 虚拟测试套件(BasiTest.java):

    pom.xml文件包含:

      <dependencies>
          <dependency>
              <groupId>org.junit.jupiter</groupId>
              <artifactId>junit-jupiter</artifactId>
              <version>5.6.2</version>
              <scope>test</scope>
          </dependency>
      </dependencies>
    
    我必须提到,包含JUnit测试用例(第一个项目)的jar文件是由JUnit插件加载的,带有@test注释的方法正在运行(我可以在控制台中看到输出),但是安装和拆卸阶段完全被忽略

    你知道为什么吗

    非常感谢

  • JMeter自动调用
    setUp
    tearDown
    函数
  • 您需要从单独的JUnit请求采样器中显式调用带有
    @BeforeClass
    @AfterClass
    注释的函数,这同样适用于
    @BeforeAll
    @AfterAll
  • 我不认为JUnit 5是官方支持的,考虑降级,否则你将独自面对你的问题。 更多信息:

      <dependencies>
          <dependency>
              <groupId>org.junit.jupiter</groupId>
              <artifactId>junit-jupiter</artifactId>
              <version>5.6.2</version>
              <scope>test</scope>
          </dependency>
      </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>com.lazerycode.jmeter</groupId>
                    <artifactId>jmeter-maven-plugin</artifactId>
                    <version>3.0.0</version>
                    <executions>
                        <execution>
                            <id>configuration</id>
                            <goals>
                                <goal>configure</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>jmeter-tests</id>
                            <goals>
                                <goal>jmeter</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <overrideRootLogLevel>debug</overrideRootLogLevel>
                        <jmeterExtensions>
                            <artifact>org.junit.jupiter:junit-jupiter:5.6.2</artifact>
                        </jmeterExtensions>
                        <junitLibraries>
                            <artifact>com.dummy.group.id:junit4sample:0.0.1-SNAPSHOT-tests</artifact>
                        </junitLibraries>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    <?xml version="1.0" encoding="UTF-8"?>
    <jmeterTestPlan version="1.2" properties="5.0" jmeter="5.2.1">
      <hashTree>
        <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
          <stringProp name="TestPlan.comments"></stringProp>
          <boolProp name="TestPlan.functional_mode">false</boolProp>
          <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
          <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
          <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="TestPlan.user_define_classpath"></stringProp>
        </TestPlan>
        <hashTree>
          <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
            <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
            <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
              <boolProp name="LoopController.continue_forever">false</boolProp>
              <stringProp name="LoopController.loops">1</stringProp>
            </elementProp>
            <stringProp name="ThreadGroup.num_threads">10</stringProp>
            <stringProp name="ThreadGroup.ramp_time">1</stringProp>
            <boolProp name="ThreadGroup.scheduler">false</boolProp>
            <stringProp name="ThreadGroup.duration"></stringProp>
            <stringProp name="ThreadGroup.delay"></stringProp>
            <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
          </ThreadGroup>
          <hashTree>
            <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true">
              <stringProp name="junitSampler.classname">com.dummy.group.id.BasicTest</stringProp>
              <stringProp name="junitsampler.constructorstring"></stringProp>
              <stringProp name="junitsampler.method">passingTest</stringProp>
              <stringProp name="junitsampler.pkg.filter"></stringProp>
              <stringProp name="junitsampler.success">Test successful</stringProp>
              <stringProp name="junitsampler.success.code">1000</stringProp>
              <stringProp name="junitsampler.failure">Test failed</stringProp>
              <stringProp name="junitsampler.failure.code">0001</stringProp>
              <stringProp name="junitsampler.error">An unexpected error occurred</stringProp>
              <stringProp name="junitsampler.error.code">9999</stringProp>
              <stringProp name="junitsampler.exec.setup">false</stringProp>
              <stringProp name="junitsampler.append.error">false</stringProp>
              <stringProp name="junitsampler.append.exception">false</stringProp>
              <boolProp name="junitsampler.junit4">true</boolProp>
            </JUnitSampler>
    
            <hashTree>
              <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
                <boolProp name="ResultCollector.error_logging">false</boolProp>
                <objProp>
                  <name>saveConfig</name>
                  <value class="SampleSaveConfiguration">
                    <time>true</time>
                    <latency>true</latency>
                    <timestamp>true</timestamp>
                    <success>true</success>
                    <label>true</label>
                    <code>true</code>
                    <message>true</message>
                    <threadName>true</threadName>
                    <dataType>true</dataType>
                    <encoding>false</encoding>
                    <assertions>true</assertions>
                    <subresults>true</subresults>
                    <responseData>false</responseData>
                    <samplerData>false</samplerData>
                    <xml>false</xml>
                    <fieldNames>true</fieldNames>
                    <responseHeaders>false</responseHeaders>
                    <requestHeaders>false</requestHeaders>
                    <responseDataOnError>false</responseDataOnError>
                    <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                    <assertionsResultsToSave>0</assertionsResultsToSave>
                    <bytes>true</bytes>
                    <sentBytes>true</sentBytes>
                    <url>true</url>
                    <threadCounts>true</threadCounts>
                    <idleTime>true</idleTime>
                    <connectTime>true</connectTime>
                  </value>
                </objProp>
                <stringProp name="filename"></stringProp>
              </ResultCollector>
              <hashTree/>
            </hashTree>
          </hashTree>
        </hashTree>
      </hashTree>
    </jmeterTestPlan>