gpt4 book ai didi

java - "org.testng.TestNGException: org.xml.sax.SAXParseException; Element type "Listeners"必须声明。在处理监听器时

转载 作者:行者123 更新时间:2023-12-02 03:46:16 25 4
gpt4 key购买 nike

我正在使用 TestNG Listener 来生成范围报告,然后我收到以下异常。

org.testng.TestNGException: org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 12; Element type "Listeners" must be declared.

使用 ITestListener 时观察到的问题也是如此。所以问题可能完全出在听众身上。请在这方面帮助我。

我的测试环境如下。 Selenium -java:版本- 3.141.59testng:版本- 6.14.3Java:版本 - 1.8

我尝试添加来自 com.aventstack 的最新或旧版本的 ExtentReport 依赖项以及旧的 com.relevantcodes 版本,如下所示

com.aventstack extentreports 4.0.9 OR 3.1.5 along with com.relevantcodes extentreports 2.41.2 OR 2.41.1

我还尝试在 Testng.xml 或实现监听器的类中或两者中提供监听器信息

1。 Testng.xml 文件“/> 或2.在实现Listener的类中直接使用@Listeners注解@Listeners({.class})

请找到如下代码

POM.xml 文件

<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>Framework</groupId>
<artifactId>Jesus_Practise</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>Jesus_Practise</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>

<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>com.relevantcodes</groupId>
<artifactId>extentreports</artifactId>
<version>2.41.1</version>
</dependency>

<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>3.1.5</version>
</dependency>

</dependencies>
</project>

testng.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="FreeCRM Test Suite">
<Listeners>
<Listener class-name="com.qa.Listeners.ExtentReporterNG"/>
<Listener class-name="com.qa.Listeners.ITestListen"/>
</Listeners>
<test thread-count="5" name="FreeCRM Test">
<classes>
<class name="com.qa.testcases.LoginPageTest" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

记者

package com.qa.Listeners;

import java.io.File;

import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.testng.IReporter;
import org.testng.IResultMap;
import org.testng.ISuite;
import org.testng.ISuiteResult;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.annotations.Listeners;
import org.testng.xml.XmlSuite;

import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;

@Listeners({ExtentReporterNG.class})
public class ExtentReporterNG implements IReporter{

private ExtentReports extent;

public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
String outputDirectory) {
extent = new ExtentReports(outputDirectory + File.separator
+ "Extent.html", true);

for (ISuite suite : suites) {
Map<String, ISuiteResult> result = suite.getResults();

for (ISuiteResult r : result.values()) {
ITestContext context = r.getTestContext();

buildTestNodes(context.getPassedTests(), LogStatus.PASS);
buildTestNodes(context.getFailedTests(), LogStatus.FAIL);
buildTestNodes(context.getSkippedTests(), LogStatus.SKIP);
}
}

extent.flush();
extent.close();
}

private void buildTestNodes(IResultMap tests, LogStatus status) {
ExtentTest test;

if (tests.size() > 0) {
for (ITestResult result : tests.getAllResults()) {
test = extent.startTest(result.getMethod().getMethodName());

test.setStartedTime(getTime(result.getStartMillis()));
test.setEndedTime(getTime(result.getEndMillis()));

for (String group : result.getMethod().getGroups())
test.assignCategory(group);

if (result.getThrowable() != null) {
test.log(status, result.getThrowable());
} else {
test.log(status, "Test " + status.toString().toLowerCase()
+ "ed");
}

extent.endTest(test);
}
}
}

private Date getTime(long millis) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(millis);
return calendar.getTime();
}

}

最佳答案

问题出在您的套件 xml 文件中。

在套件 xml 文件中定义监听器的正确方法是使用标签 <listeners></listeners> 。您的套件 xml 将它们定义为 <Listeners></Listeners><Listener>分别。请修复您的标签,使其在所有小写字母中定义。

您的标签以大写字母开头。

关于java - "org.testng.TestNGException: org.xml.sax.SAXParseException; Element type "Listeners"必须声明。在处理监听器时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56805172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com