zoukankan      html  css  js  c++  java
  • unable to find resource 'xxxxxoverview.vm' in any resource loader.

    ResourceManager : unable to find resource 'C:TestTestConfigoverview.vm' in any resource loader.
    org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'C:TestTestConfigoverview.vm'
    at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:474)
    at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:352)
    at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1533)
    at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1514)
    at org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:373)
    at baseReport.GenerateReporter.generateReport(GenerateReporter.java:28)
    at org.testng.TestNG.generateReports(TestNG.java:1076)
    at org.testng.TestNG.run(TestNG.java:1001)
    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)

    导致的原因是overview.vm路径不正确

    换了一种写法,注释掉的是之前的,对比下

    package baseReport;
    
    import org.apache.velocity.Template;
    import org.apache.velocity.VelocityContext;
    import org.apache.velocity.app.VelocityEngine;
    import org.testng.*;
    import org.testng.xml.XmlSuite;
    
    import java.io.*;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    
    public class GenerateReporter implements IReporter {
    
        @Override
        public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
                                   String outputDirectory) {
            // TODO Auto-generated method stub
            try {
                // 初始化并取得Velocity引擎
                VelocityEngine ve = new VelocityEngine();
                Properties p = new Properties();
                String fileDir=".//TestConfig/";
                //p.setProperty("resource.loader", "class");
                //p.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
                //ve.init(p);
                //Template t = ve.getTemplate("main/java/baseReport/overview.vm");
                p.setProperty(ve.FILE_RESOURCE_LOADER_PATH, fileDir); //此处的fileDir可以直接用绝对路径来
                ve.init(p);   //初始化
                Template t = ve.getTemplate("overview.vm");//此处只要指明文件名就可以了.
                VelocityContext context = new VelocityContext();
    
                for (ISuite suite : suites) {
                    Map<String, ISuiteResult> suiteResults = suite.getResults();
                    for (ISuiteResult suiteResult : suiteResults.values()) {
                        ReporterData data = new ReporterData();
                        ITestContext testContext = suiteResult.getTestContext();
                        // 把数据填入上下文
                        context.put("overView", data.testContext(testContext));//测试结果汇总信息
                        //ITestNGMethod[] allTests = testContext.getAllTestMethods();//所有的测试方法
                        //Collection<ITestNGMethod> excludeTests = testContext.getExcludedMethods();//未执行的测试方法
                        IResultMap passedTests = testContext.getPassedTests();//测试通过的测试方法
                        IResultMap failedTests = testContext.getFailedTests();//测试失败的测试方法
                        IResultMap skippedTests = testContext.getSkippedTests();//测试跳过的测试方法
                        //IResultMap starttime=testContext.getStartDate();
                        //IResultMap endtime=testContext.getEndDate();
    
                        context.put("pass", data.testResults(passedTests, ITestResult.SUCCESS));
                        context.put("fail", data.testResults(failedTests, ITestResult.FAILURE));
                        context.put("skip", data.testResults(skippedTests, ITestResult.FAILURE));
                    }
                }
                // 输出流
    
                        OutputStream out = new FileOutputStream("report.html");
                        Writer writer = new BufferedWriter(new OutputStreamWriter(out, "utf-8"));//解决乱码问题
                // 转换输出
                t.merge(context, writer);
                //System.out.println(writer.toString());
                writer.flush();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        }
    

      

  • 相关阅读:
    代理模式
    观察者模式
    策略模式
    Unity 常用常找的东西存放
    Unity中一键创建常用文件夹
    Unity中Oculus分屏相机和普通相机一键切换
    Java并发和多线程4:使用通用同步工具CountDownLatch实现线程等待
    Java并发和多线程3:线程调度和有条件取消调度
    Java并发和多线程3:线程调度和有条件取消调度
    Java并发和多线程2:3种方式实现数组求和
  • 原文地址:https://www.cnblogs.com/qianjinyan/p/9760033.html
Copyright © 2011-2022 走看看