Conversion error com.thoughtworks.xstream.converters.ConversionException

huangapple 未分类评论62阅读模式
英文:

Conversion error com.thoughtworks.xstream.converters.ConversionException

问题

这是你提供的内容的翻译:

我正在尝试自动运行 JMeter 脚本。但是我遇到了以下错误。

信息 2020-07-27 15:17:27.723 [jmeter.e] (): 在启用运行版本后将启动监听器
信息 2020-07-27 15:17:27.751 [jmeter.e] (): 要恢复到以前的行为,请定义 jmeterengine.startlistenerslater=false
信息 2020-07-27 15:17:29.094 [jmeter.u] (): 将区域设置设置为 en_US
主线程中的异常 "main" java.lang.NullPointerException
at org.apache.jmeter.engine.StandardJMeterEngine.configure(StandardJMeterEngine.java:176)
at com.apache.maven.ApacheMavenJmeterIntegration.main(ApacheMavenJmeterIntegration.java:28)

代码

// 这里是你的 Java 代码部分

pom.xml

<!-- 这里是你的 pom.xml 配置部分 -->

jmeter.log

2020/07/27 15:17:35 信息  - jmeter.save.SaveService: 测试计划 (JMX) 版本: 2.2。测试日志 (JTL) 版本: 2.2 
2020/07/27 15:17:35 信息  - jmeter.save.SaveService: 使用 SaveService 属性文件编码 UTF-8 
2020/07/27 15:17:35 信息  - jmeter.save.SaveService: 使用 SaveService 属性版本 5.0 
2020/07/27 15:17:35 警告  - jmeter.save.SaveService: 错误的 _version - 预期为 2.2,发现 5.0 
2020/07/27 15:17:35 信息  - jmeter.save.SaveService: 所有转换器版本均存在且正确 
2020/07/27 15:17:37 错误 - jmeter.save.SaveService: 转换错误 com.thoughtworks.xstream.converters.ConversionException: org/apache/jmeter/testelement/TestStateListener : org/apache/jmeter/testelement/TestStateListener
---- 调试信息 ----
message             : org/apache/jmeter/testelement/TestStateListener
cause-exception     : java.lang.NoClassDefFoundError
cause-message       : org/apache/jmeter/testelement/TestStateListener
first-jmeter-class  : org.apache.jmeter.protocol.http.sampler.HTTPSamplerBaseConverter.canConvert(HTTPSamplerBaseConverter.java:52)
class               : org.apache.jmeter.save.ScriptWrapper
required-type       : org.apache.jmeter.save.ScriptWrapper
path                : /jmeterTestPlan/hashTree
line number         : 3
------------------------------- 
英文:

I am trying to run JMeter scripts automatically. But i am getting following error.

INFO 2020-07-27 15:17:27.723 [jmeter.e] (): Listeners will be started after enabling running version
INFO 2020-07-27 15:17:27.751 [jmeter.e] (): To revert to the earlier behaviour, define jmeterengine.startlistenerslater=false
INFO 2020-07-27 15:17:29.094 [jmeter.u] (): Setting Locale to en_US
Exception in thread "main" java.lang.NullPointerException
at org.apache.jmeter.engine.StandardJMeterEngine.configure(StandardJMeterEngine.java:176)
at com.apache.maven.ApacheMavenJmeterIntegration.main(ApacheMavenJmeterIntegration.java:28)

code

package com.apache.maven;

import java.io.FileInputStream;

import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;

public class ApacheMavenJmeterIntegration {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub

        StandardJMeterEngine jmeter = new StandardJMeterEngine();

        JMeterUtils.loadJMeterProperties(&quot;F:/apache-jmeter-5.3/bin/jmeter.properties&quot;);
        JMeterUtils.setJMeterHome(&quot;F:/apache-jmeter-5.3&quot;);
        JMeterUtils.initLocale();
        JMeterUtils.initLogging();

        SaveService.loadProperties();
        FileInputStream in = new FileInputStream(&quot;F:\\apache-maven-3.6.3\\bin\\src\\test\\jmeter\\PlanPackage.jmx&quot;);

        HashTree testPlanTree = SaveService.loadTree(in);
        in.close();

        jmeter.configure(testPlanTree);
        jmeter.run();

    }
}

pom.xml

&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
	&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
	&lt;groupId&gt;com.apache.maven&lt;/groupId&gt;
	&lt;artifactId&gt;com.apache.maven&lt;/artifactId&gt;
	&lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;

	&lt;dependencies&gt;
		&lt;!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-dependency-plugin --&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
			&lt;artifactId&gt;maven-dependency-plugin&lt;/artifactId&gt;
			&lt;version&gt;3.1.1&lt;/version&gt;
		&lt;/dependency&gt;
		&lt;!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core --&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.apache.jmeter&lt;/groupId&gt;
			&lt;artifactId&gt;ApacheJMeter_core&lt;/artifactId&gt;
			&lt;version&gt;2.6&lt;/version&gt;
		&lt;/dependency&gt;
		&lt;!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_http --&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.apache.jmeter&lt;/groupId&gt;
			&lt;artifactId&gt;ApacheJMeter_http&lt;/artifactId&gt;
			&lt;version&gt;2.8&lt;/version&gt;
		&lt;/dependency&gt;

	&lt;/dependencies&gt;
	&lt;build&gt;
		&lt;plugins&gt;
			&lt;plugin&gt;
				&lt;groupId&gt;com.lazerycode.jmeter&lt;/groupId&gt;
				&lt;artifactId&gt;jmeter-maven-plugin&lt;/artifactId&gt;
				&lt;version&gt;3.1.0&lt;/version&gt;
			&lt;/plugin&gt;
			&lt;plugin&gt;
				&lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
				&lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt;
				&lt;version&gt;3.0.0&lt;/version&gt;
				&lt;executions&gt;
					&lt;execution&gt;
						&lt;goals&gt;
							&lt;goal&gt;java&lt;/goal&gt;
						&lt;/goals&gt;
					&lt;/execution&gt;
				&lt;/executions&gt;
				&lt;configuration&gt;
					&lt;mainClass&gt;com.apache.maven.ApacheMaven&lt;/mainClass&gt;
					&lt;arguments&gt;
						&lt;argument&gt;foo&lt;/argument&gt;
						&lt;argument&gt;bar&lt;/argument&gt;
					&lt;/arguments&gt;
				&lt;/configuration&gt;
			&lt;/plugin&gt;
		&lt;/plugins&gt;
	&lt;/build&gt;
&lt;/project&gt;

jmeter.log

2020/07/27 15:17:35 INFO  - jmeter.save.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2 
2020/07/27 15:17:35 INFO  - jmeter.save.SaveService: Using SaveService properties file encoding UTF-8 
2020/07/27 15:17:35 INFO  - jmeter.save.SaveService: Using SaveService properties version 5.0 
2020/07/27 15:17:35 WARN  - jmeter.save.SaveService: Bad _version - expected 2.2, found 5.0. 
2020/07/27 15:17:35 INFO  - jmeter.save.SaveService: All converter versions present and correct 
2020/07/27 15:17:37 ERROR - jmeter.save.SaveService: Conversion error com.thoughtworks.xstream.converters.ConversionException: org/apache/jmeter/testelement/TestStateListener : org/apache/jmeter/testelement/TestStateListener
---- Debugging information ----
message             : org/apache/jmeter/testelement/TestStateListener
cause-exception     : java.lang.NoClassDefFoundError
cause-message       : org/apache/jmeter/testelement/TestStateListener
first-jmeter-class  : org.apache.jmeter.protocol.http.sampler.HTTPSamplerBaseConverter.canConvert(HTTPSamplerBaseConverter.java:52)
class               : org.apache.jmeter.save.ScriptWrapper
required-type       : org.apache.jmeter.save.ScriptWrapper
path                : /jmeterTestPlan/hashTree
line number         : 3
------------------------------- 

答案1

得分: 0

如果您需要使用JMeter Maven插件来运行JMeter测试-您不需要编写任何代码,只需使用以下pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>jmeter-maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <!-- Generate JMeter configuration -->
                    <execution>
                        <id>configuration</id>
                        <goals>
                            <goal>configure</goal>
                        </goals>
                    </execution>
                    <!-- Run JMeter tests -->
                    <execution>
                        <id>jmeter-tests</id>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                    <!-- Fail build on errors in test -->
                    <execution>
                        <id>jmeter-check-results</id>
                        <goals>
                            <goal>results</goal>
                        </goals>
                    </execution>
                </executions>
                <!-- Generate HTML Reporting Dashboard -->
                <configuration>
                    <generateReports>true</generateReports>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

并将您的.jmx测试脚本放在与pom.xml相对的src/test/jmeter文件夹下,使您的项目看起来像这样:

- pom.xml
- src
  - test
     - jmeter
       - your-test.jmx

更多信息:如何使用JMeter Maven插件

英文:

If you need to run your JMeter test with the help of JMeter Maven Plugin - you don't need to write any code, just use the following pom.xml file:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
         xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

    &lt;groupId&gt;org.example&lt;/groupId&gt;
    &lt;artifactId&gt;jmeter-maven&lt;/artifactId&gt;
    &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;

    &lt;build&gt;
        &lt;plugins&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;com.lazerycode.jmeter&lt;/groupId&gt;
                &lt;artifactId&gt;jmeter-maven-plugin&lt;/artifactId&gt;
                &lt;version&gt;3.1.1&lt;/version&gt;
                &lt;executions&gt;
                    &lt;!-- Generate JMeter configuration --&gt;
                    &lt;execution&gt;
                        &lt;id&gt;configuration&lt;/id&gt;
                        &lt;goals&gt;
                            &lt;goal&gt;configure&lt;/goal&gt;
                        &lt;/goals&gt;
                    &lt;/execution&gt;
                    &lt;!-- Run JMeter tests --&gt;
                    &lt;execution&gt;
                        &lt;id&gt;jmeter-tests&lt;/id&gt;
                        &lt;goals&gt;
                            &lt;goal&gt;jmeter&lt;/goal&gt;
                        &lt;/goals&gt;
                    &lt;/execution&gt;
                    &lt;!-- Fail build on errors in test --&gt;
                    &lt;execution&gt;
                        &lt;id&gt;jmeter-check-results&lt;/id&gt;
                        &lt;goals&gt;
                            &lt;goal&gt;results&lt;/goal&gt;
                        &lt;/goals&gt;
                    &lt;/execution&gt;
                &lt;/executions&gt;
                &lt;!-- Generate HTML Reporting Dashboard --&gt;
                &lt;configuration&gt;
                    &lt;generateReports&gt;true&lt;/generateReports&gt;
                &lt;/configuration&gt;
            &lt;/plugin&gt;
        &lt;/plugins&gt;
    &lt;/build&gt;


&lt;/project&gt;

and put your .jmx test script(s) under src/test/jmeter folder relative to the pom.xml so your project would look like:

- pom.xml
- src
  - test
     - jmeter
       - your-test.jmx

More information: How to Use the JMeter Maven Plugin

huangapple
  • 本文由 发表于 2020年7月27日 17:57:19
  • 转载请务必保留本文链接:https://java.coder-hub.com/63112888.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定