即使找到匹配的构造函数,也找不到它 import groovy.util.slurpersupport.Node 导入groovy.util.slurpersupport.NodeChild /** *创建于2017年3月25日。 */ File File=新文件(“/Users/user1/output/1”) XMLLoader XMLLoader=新的XMLLoader(文件); HashMap temp=xmlLoader.sendNodes() JunitDataParser junitParser=新的JunitDataParser(临时) junitParser.populateStats() 公共类XMLLoader{ HashMap rootNodes;//Junit xml文件的根节点集合 公共XMLLoader(文件junitFile){ rootNodes=newarraylist() //若文件是目录,那个么closure将搜索目录以查找有效的xml文件 if(junitFile.isDirectory()){ junitFile.eachFile{ 如果(验证文件(it)){ rootNodes.put(it.name,new XmlSlurper().parse(it))//将每个fine加载到XmlSlurper的arraylist中 } } }否则{ if(验证文件(junitFile)){ put(junitFile.name,新的XmlSlurper().parse(it)) //将单个fine加载到XMLSlurpers的arraylist中 } } } 布尔验证文件(文件检查文件){ if(checkFile.name.endsWith('.xml')){ assert checkFile.exists():“无法读取输入的文件” assert checkFile.canRead():“无法读取输入的文件” 返回true; } 返回错误 } HashMap sendNodes(){ 返回根节点 } } 公共类JunitDataParser扩展了GeneralDataParser{ def JunitDataParser(HashMap根节点){ 超级(根节点) } HashMap getPopulatedData(){ 返回super.getPopulatedData() } 遗嘱无效{ ArrayList stats=getTestSuites(); } ArrayList getTestSuites(){ ArrayList testSuites=新的ArrayList() get(“first.xml”)。***'.findAll{ (it.name().equals(“testsuite”)&&(it.children().getAt(0.name().equals(“testcase”)) }.每个{ TestSuite temp=newtestSuite(it.attributes().get(“name”)、it.attributes().get(“tests”).toInteger()、it.attributes().get(“errors”).toInteger()、it.attributes().get(“time”)、it.attributes().get(“timestamp”)、getTestCases(it)) testSuites.add(临时) } 返回测试套件 } ArrayList getTestCases(NodeChild testSuiteNode){ ArrayList testCases=新的ArrayList() testSuiteNode.childNodes()。每个{ 串时间; if(time!=null&&time.length()>0){ time=it.attributes().get(“时间”) }否则{ time=“未找到时间” } 添加(新的TestCase(it.attributes().get(“name”)、getoutput(it)、time)) } 返回测试用例 } TestResult GetOutput(节点testCaseNode){ String testMessage=“hi” int testoutput=0; 如果(testCaseNode.childNodes().size()!=0){ testCaseNode.childNodes()。每个{ it.attributes()。每个{ testMessage=testMessage+“\n$it.key:$it.value” } } 测试结果=1 } TestResult temp=新的TestResult(0,testMessage) 返回温度 } } //所有附加解析器应扩展和填充的基本抽象类 公共抽象类GeneralDataParser{ HashMap根节点 HashMap填充数据 公共GeneralDataParser(HashMap根节点){ this.rootNodes=rootNodes } 遗嘱摘要 抽象ArrayList getTestSuites() 抽象数组列表getTestCases(NodeChild TestSuiteNode) 抽象TestResult GetOutput(节点testCaseNode) } 公共类测试套件{ ArrayList测试套件 测试套件(ArrayList测试套件){ this.testSuites=testSuites } } 公共类测试套件{ 字符串testSuiteName 智力测验 整数numOfErrors int NUMOF故障 字符串时间; 字符串时间戳; ArrayList测试用例 TestSuite(字符串testSuiteName、int numOfTests、int numOfErrors、int numOfFailures、字符串耗时、字符串时间戳、ArrayList测试用例){ this.testSuiteName=testSuiteName this.numOfTests=numOfTests this.numOfErrors=numOfErrors this.numOfFailures=numOfFailures this.timetake=耗时 this.timeStamp=时间戳 this.testCases=testCases } } 公共类测试用例{ 字符串testCasename 测试结果测试结果 字符串testCaseTime=“” TestCase(字符串testCasename、TestResult TestOutput、字符串testCaseTime){ this.testCasename=testCasename this.testoutput=testoutput this.testCaseTime=testCaseTime } } 公共类测试结果{ 瓦洛弗雷特酒店 字符串textOfResult 测试结果(int-valOfResult、String-textOfResult){ this.valOfResult=valOfResult this.textOfResult=textOfResult } }
我一直找不到匹配的构造函数。有人看到任何问题吗 捕获:groovy.lang.GroovyRuntimeException:找不到与以下内容匹配的构造函数:TestSuite(java.lang.String、java.lang.Integer、java.lang.Integer、java.lang.String、java.util.ArrayList) groovy.lang.GroovyRuntimeException:找不到以下的匹配构造函数:TestSuite(java.lang.String、java.lang.Integer、java.lang.Integer、java.lang.String、java.lang.String、java.util.ArrayList) 在JunitDataParser$_getTestSuites_closure2.doCall(JunitXMLToBeautifulHTML.groovy:70) 在JunitDataParser.getTestSuites(JunitXMLToBeautifulHTML.groovy:67) 在JunitDataParser.populateStats(JunitXMLToBeautifulHTML.groovy:62) 在JunitDataParser$populateStats.call(未知源) 在JunitXMLToBeautifulHTML.run(JunitXMLToBeautifulHTML.groovy:13) 位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 急诊室即使找到匹配的构造函数,也找不到它 import groovy.util.slurpersupport.Node 导入groovy.util.slurpersupport.NodeChild /** *创建于2017年3月25日。 */ File File=新文件(“/Users/user1/output/1”) XMLLoader XMLLoader=新的XMLLoader(文件); HashMap temp=xmlLoader.sendNodes() JunitDataParser junitParser=新的JunitDataParser(临时) junitParser.populateStats() 公共类XMLLoader{ HashMap rootNodes;//Junit xml文件的根节点集合 公共XMLLoader(文件junitFile){ rootNodes=newarraylist() //若文件是目录,那个么closure将搜索目录以查找有效的xml文件 if(junitFile.isDirectory()){ junitFile.eachFile{ 如果(验证文件(it)){ rootNodes.put(it.name,new XmlSlurper().parse(it))//将每个fine加载到XmlSlurper的arraylist中 } } }否则{ if(验证文件(junitFile)){ put(junitFile.name,新的XmlSlurper().parse(it)) //将单个fine加载到XMLSlurpers的arraylist中 } } } 布尔验证文件(文件检查文件){ if(checkFile.name.endsWith('.xml')){ assert checkFile.exists():“无法读取输入的文件” assert checkFile.canRead():“无法读取输入的文件” 返回true; } 返回错误 } HashMap sendNodes(){ 返回根节点 } } 公共类JunitDataParser扩展了GeneralDataParser{ def JunitDataParser(HashMap根节点){ 超级(根节点) } HashMap getPopulatedData(){ 返回super.getPopulatedData() } 遗嘱无效{ ArrayList stats=getTestSuites(); } ArrayList getTestSuites(){ ArrayList testSuites=新的ArrayList() get(“first.xml”)。***'.findAll{ (it.name().equals(“testsuite”)&&(it.children().getAt(0.name().equals(“testcase”)) }.每个{ TestSuite temp=newtestSuite(it.attributes().get(“name”)、it.attributes().get(“tests”).toInteger()、it.attributes().get(“errors”).toInteger()、it.attributes().get(“time”)、it.attributes().get(“timestamp”)、getTestCases(it)) testSuites.add(临时) } 返回测试套件 } ArrayList getTestCases(NodeChild testSuiteNode){ ArrayList testCases=新的ArrayList() testSuiteNode.childNodes()。每个{ 串时间; if(time!=null&&time.length()>0){ time=it.attributes().get(“时间”) }否则{ time=“未找到时间” } 添加(新的TestCase(it.attributes().get(“name”)、getoutput(it)、time)) } 返回测试用例 } TestResult GetOutput(节点testCaseNode){ String testMessage=“hi” int testoutput=0; 如果(testCaseNode.childNodes().size()!=0){ testCaseNode.childNodes()。每个{ it.attributes()。每个{ testMessage=testMessage+“\n$it.key:$it.value” } } 测试结果=1 } TestResult temp=新的TestResult(0,testMessage) 返回温度 } } //所有附加解析器应扩展和填充的基本抽象类 公共抽象类GeneralDataParser{ HashMap根节点 HashMap填充数据 公共GeneralDataParser(HashMap根节点){ this.rootNodes=rootNodes } 遗嘱摘要 抽象ArrayList getTestSuites() 抽象数组列表getTestCases(NodeChild TestSuiteNode) 抽象TestResult GetOutput(节点testCaseNode) } 公共类测试套件{ ArrayList测试套件 测试套件(ArrayList测试套件){ this.testSuites=testSuites } } 公共类测试套件{ 字符串testSuiteName 智力测验 整数numOfErrors int NUMOF故障 字符串时间; 字符串时间戳; ArrayList测试用例 TestSuite(字符串testSuiteName、int numOfTests、int numOfErrors、int numOfFailures、字符串耗时、字符串时间戳、ArrayList测试用例){ this.testSuiteName=testSuiteName this.numOfTests=numOfTests this.numOfErrors=numOfErrors this.numOfFailures=numOfFailures this.timetake=耗时 this.timeStamp=时间戳 this.testCases=testCases } } 公共类测试用例{ 字符串testCasename 测试结果测试结果 字符串testCaseTime=“” TestCase(字符串testCasename、TestResult TestOutput、字符串testCaseTime){ this.testCasename=testCasename this.testoutput=testoutput this.testCaseTime=testCaseTime } } 公共类测试结果{ 瓦洛弗雷特酒店 字符串textOfResult 测试结果(int-valOfResult、String-textOfResult){ this.valOfResult=valOfResult this.textOfResult=textOfResult } },groovy,constructor,Groovy,Constructor,我一直找不到匹配的构造函数。有人看到任何问题吗 捕获:groovy.lang.GroovyRuntimeException:找不到与以下内容匹配的构造函数:TestSuite(java.lang.String、java.lang.Integer、java.lang.Integer、java.lang.String、java.util.ArrayList) groovy.lang.GroovyRuntimeException:找不到以下的匹配构造函数:TestSuite(java.lang.Str
import groovy.util.slurpersupport.Node
import groovy.util.slurpersupport.NodeChild
/**
* Created by on 2017-03-25.
*/
File file = new File("/Users/user1/output/1")
XMLLoader xmlLoader = new XMLLoader(file);
HashMap<String, XmlSlurper> temp = xmlLoader.sendNodes()
JunitDataParser junitParser = new JunitDataParser(temp)
junitParser.populateStats()
public class XMLLoader {
HashMap<String, XmlSlurper> rootNodes; // Collection of root nodes for Junit xml files
public XMLLoader(File junitFile) {
rootNodes = new ArrayList<>()
// If file is directory then closure will search directory to find valid xml files
if (junitFile.isDirectory()) {
junitFile.eachFile {
if (validateFile(it)) {
rootNodes.put(it.name, new XmlSlurper().parse(it)) // Load each fine into arraylist of XMLSlurpers
}
}
} else {
if (validateFile(junitFile)) {
rootNodes.put(junitFile.name, new XmlSlurper().parse(it))
// Load single fine into arraylist of XMLSlurpers
}
}
}
boolean validateFile(File checkFile) {
if (checkFile.name.endsWith('.xml')) {
assert checkFile.exists(): "The file entered could not be be read"
assert checkFile.canRead(): "The file entered could not be be read"
return true;
}
return false
}
HashMap<String, XmlSlurper> sendNodes() {
return rootNodes
}
}
public class JunitDataParser extends GeneralDataParser {
def JunitDataParser(HashMap<String, XmlSlurper> rootNodes) {
super(rootNodes)
}
HashMap<String, ArrayList<TestSuites>> getPopulatedData() {
return super.getPopulatedData()
}
void populateStats() {
ArrayList<TestSuite> stats = getTestSuites();
}
ArrayList<TestSuite> getTestSuites() {
ArrayList<TestSuite> testSuites = new ArrayList<>()
rootNodes.get("first.xml").'**'.findAll {
(it.name().equals("testsuite")) && (it.children().getAt(0).name().equals("testcase"))
}.each {
TestSuite temp = new TestSuite(it.attributes().get("name"), it.attributes().get("tests").toInteger(), it.attributes().get("errors").toInteger(), it.attributes().get("time"), it.attributes().get("timestamp"), getTestCases(it))
testSuites.add(temp)
}
return testSuites
}
ArrayList<TestCase> getTestCases(NodeChild testSuiteNode) {
ArrayList<TestCase> testCases = new ArrayList<>()
testSuiteNode.childNodes().each {
String time;
if (time!=null && time.length()>0) {
time = it.attributes().get("time")
} else {
time = "Time Not Found"
}
testCases.add(new TestCase(it.attributes().get("name"), getOutCome(it), time))
}
return testCases
}
TestResult getOutCome(Node testCaseNode) {
String testMessage = "hi"
int testOutcome = 0;
if (testCaseNode.childNodes().size() != 0) {
testCaseNode.childNodes().each {
it.attributes().each {
testMessage = testMessage + "\n $it.key : $it.value"
}
}
testOutcome =1
}
TestResult temp = new TestResult(0,testMessage)
return temp
}
}
// The Base abstract class that all additional parsers should extend and populate
public abstract class GeneralDataParser {
HashMap<String, XmlSlurper> rootNodes
HashMap<String, ArrayList<TestSuites>> populatedData
public GeneralDataParser(HashMap<String, XmlSlurper> rootNodes) {
this.rootNodes = rootNodes
}
abstract void populateStats()
abstract ArrayList<TestSuite> getTestSuites()
abstract ArrayList<TestCase> getTestCases(NodeChild testSuiteNodes)
abstract TestResult getOutCome(Node testCaseNode)
}
public class TestSuites {
ArrayList<TestSuite> testSuites
TestSuites(ArrayList<TestSuite> testSuites) {
this.testSuites = testSuites
}
}
public class TestSuite {
String testSuiteName
int numOfTests
int numOfErrors
int numOfFailures
String timeTaken;
String timeStamp;
ArrayList<TestCase> testCases
TestSuite(String testSuiteName, int numOfTests, int numOfErrors, int numOfFailures, String timeTaken, String timeStamp, ArrayList<TestCase> testCases) {
this.testSuiteName = testSuiteName
this.numOfTests = numOfTests
this.numOfErrors = numOfErrors
this.numOfFailures = numOfFailures
this.timeTaken = timeTaken
this.timeStamp = timeStamp
this.testCases = testCases
}
}
public class TestCase {
String testCasename
TestResult testOutcome
String testCaseTime = ""
TestCase(String testCasename, TestResult testOutcome, String testCaseTime) {
this.testCasename = testCasename
this.testOutcome = testOutcome
this.testCaseTime = testCaseTime
}
}
public class TestResult {
int valOfResult
String textOfResult
TestResult(int valOfResult, String textOfResult) {
this.valOfResult = valOfResult
this.textOfResult = textOfResult
}
}
TestSuite(String testSuiteName, int numOfTests, int numOfErrors, int numOfFailures, String timeTaken, String timeStamp, ArrayList<TestCase> testCases)
new TestSuite(it.attributes().get("name"), it.attributes().get("tests").toInteger(), it.attributes().get("errors").toInteger(), it.attributes().get("time"), it.attributes().get("timestamp"), getTestCases(it))