2012-07-19 51 views
2

當我在Ant中運行我的代碼時,出現了錯誤,但在使用(Run> JunitTest)的eclipse上它運行良好,沒有錯誤。No Runnable方法和Test類應該只有一個公有的零參數構造函數

下面是錯誤消息時,我生成的報告,我得到:

「測試類應該有且僅有一個公共無參數的構造函數」

java.lang.Exception的:測試類應該只有一個公共的 零參數構造函數 java.lang.reflect.Constructor.newInstance(Unknown Source)

「沒有可運行的方法」 -java.lang.Exception:

:在java.lang.reflect.Constructor.newInstance(來源不明)

請看看我的代碼沒有可運行的方法這個碼具有註解(@)

import com.thoughtworks.selenium.*; 
import org.junit.After; 
import org.junit.AfterClass; 
import org.junit.Before; 
import org.junit.Test; 


public class ABMTLinks extends SeleneseTestCase { 

    /* 
    * Variables for PieChart 
    */ 
    public static int 
     iPass, 
     iFail, 
     iError, 
     iLeft=800, 
     iRight=600; 
    public static String 
     sPieChartTitle = "Pie Chart", 
     sPieChartName = "Pie Chart",  
     sPath = "c:\\temp\\pieChart.jpg"; 

    public static int iTotalTestCaseCtr, iSum; 
    public static String 
     HMT = "http://dev.abmt.igloo.com.au/GetInvolved/Hostamorningtea/tabid/165/Default.aspx"; 

    @Before 
    public void setUp() throws Exception { 
     selenium = new DefaultSelenium("localhost", 1111, "*googlechrome", "http://www.google.com.ph/"); 
     selenium.start(); 
    } 
    @Test 
    public void testUntitled() throws Exception { 
     selenium.open("/#hl=fil&output=search&sclient=psy-ab&q=harold&oq=harold&gs_l=hp.3..0l4.12830.13374.0.14277.6.6.0.0.0.2.745.2228.2-4j0j1j0j1.6.0...0.0...1c.ef1dV3OAuZg&pbx=1&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&fp=55dc10243cd7c593&biw=1366&bih=624"); 

     String URL = HMT; 
     if (URL.equals(HMT) 
      ){ 
      iPass++; 
      System.out.println("All pages redirects to each URL with no errors");   
     } 
     else { 
      iFail++; 
      assertTrue("Test Case is Failed!", false); 
      System.out.print("Failed"); 
     } 
     iTotalTestCaseCtr++; 
    } 

    @After 
    public void tearDown() throws Exception { 
     selenium.stop(); 
     iSum = iFail + iPass; 
     if (iTotalTestCaseCtr == iSum) { 
      PieChart chartABMT = new PieChart(iPass, iFail, iError, sPieChartName, sPieChartTitle, iLeft, iRight, sPath) ; 
      chartABMT.pack(); 
      chartABMT.setVisible(true); 
     } 
    } 
} 

此代碼是繼承了上述代碼,以生成餅圖和存儲在文件夾上

import java.awt.Color; 
import java.awt.Font; 
import java.io.File; 
import java.io.IOException;  
import javax.swing.JFrame; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.labels.StandardPieSectionLabelGenerator; 
import org.jfree.chart.plot.PiePlot; 
import org.jfree.data.general.DefaultPieDataset; 
import org.jfree.data.general.PieDataset; 

public class PieChart extends JFrame { 

    public static final long serialVersionUID = 1L; 

    public PieChart(int iPass, int iFail, int iError, String applicationTitle, String chartTitle, int iLeft, int iRight, String sPath) { 
     super(applicationTitle); 
     PieDataset dataset = createDataset(iFail, iError, iPass); 
     JFreeChart chart = createChart(dataset, chartTitle); 
     ChartPanel chartPanel = new ChartPanel(chart); 
     chartPanel.setPreferredSize(new java.awt.Dimension(iLeft, iRight)); 
     setContentPane(chartPanel); 
     String fileLocation = sPath ; 
     saveChart(chart, fileLocation); 

    } 

    /** 
    * Creates a sample dataset 
    */ 
    public PieDataset createDataset(int iFail, int iError, int iPass) { 
     DefaultPieDataset result = new DefaultPieDataset(); 
     result.setValue("Failed:", iFail); 
     result.setValue("Error:", iError); 
     result.setValue("Passed:", iPass); 
     return result;  
    } 

    /** 
    * Creates a chart 
    */ 
    public JFreeChart createChart(PieDataset dataset, String title) { 

     JFreeChart chart = ChartFactory.createPieChart(title,    // chart title 
      dataset,    // data 
      true,     // include legend 
      true, 
      false); 

     PiePlot plot = (PiePlot) chart.getPlot(); 
     plot.setLabelFont(new Font("SansSerif", Font.PLAIN, 12)); 
     plot.setCircular(false); 
     plot.setLabelGap(0.02); 
     plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} {1} ({2})")); //Shows the total count and percentage for Failed/Passed/Error 
     return chart; 

    } 
    public void saveChart(JFreeChart chart, String fileLocation) { 
     String fileName = fileLocation; 
     try { 
      /** 
      * This utility saves the JFreeChart as a JPEG First Parameter: 
      * FileName Second Parameter: Chart To Save Third Parameter: Height 
      * Of Picture Fourth Parameter: Width Of Picture 
      */ 
      ChartUtilities.saveChartAsJPEG(new File(fileName), chart, 800, 600); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      System.err.println("Problem occurred creating chart."); 
     } 
    } 

} 

下面是我的XML代碼:

<?xml version="1.0" encoding="iso-8859-1"?> 

<project name="JUnitTest1" default="usage" basedir="."> 
    <!-- Create a folder with date and time --> 
    <tstamp prefix="start"> 
     <format property="dateTime" pattern="MM-dd-YYYY HH-MM-ss" /> 
    </tstamp> 

    <property environment = "env"/> 
    <property name="ws.home" value="${basedir}"/> 
    <property name="ws.jars" value="C:/Selenium/selenium-2.24.1"/> 
    <property name="Igloo.dest" value="${ws.home}/build"/> 
    <property name="Igloo.src" value="${ws.home}/src"/> 
    <property name="Igloo.reportsDir" value="C:/reports/report ${start.dateTime}"/> 
    <propert name="junit.style.dir" value = "C:/xsl/junit-frames.xsl" /> 

    <path id="Igloo.path"> 
     <pathelement location="${Igloo.dest}" /> 
     <fileset dir = "${ws.jars}" > 
      <include name = "*.jar" /> 
     </fileset> 
    </path> 

    <target name="setClassPath" unless="Igloo.classpath"> 
     <path id="classpath_jars"> 
      <fileset dir="${ws.jars}" includes="*.jar" /> 
     </path> 

     <pathconvert pathsep=": " 
      property = "Igloo.classpath" 
      refid = "classpath_jars"/> 
    </target> 

    <target name="init" depends="setClassPath"> 
     <tstamp> 
      <format property="start.time" pattern="MM/dd/yyyy hh:mm ss" /> 
     </tstamp> 

     <condition property="ANT" 
      value = "${env.ANT_HOME}/bin/ant.bat" 
      else = "${env.ANT_HOME}/bin/ant"> 
       <os family="windows" /> 
     </condition> 
    </target> 

    <!-- Clean --> 
    <target name="clean"> 
     <delete dir="${Igloo.dest}"/> 
    </target> 

    <!-- Compile --> 
    <target name="compile" depends="init, clean"> 
     <delete includeemptydirs="true" quiet="true"> 
      <fileset dir="${Igloo.dest}" includes="**/*"/> 
     </delete> 

     <echo message="making directory..."/> 
     <mkdir dir="${Igloo.dest}" /> 
     <echo message="classpath ...: ${Igloo.classpath}"/> 
     <echo message="compiling..."/> 

     <javac 
      debug="true" 
      destdir="${Igloo.dest}" 
      srcdir="${Igloo.src}" 
      target="1.7" 
      classpath="${Igloo.classpath}" 
     > 
     </javac> 

    </target> 

    <!-- build --> 
    <target name="build" depends="init"> 
    </target> 

    <target name="usage"> 
     <echo> 
      ant run will execute the test 
     </echo> 
    </target> 

    <!-- Run --> 
    <target name="run"> 
     <mkdir dir="${Igloo.reportsDir}" /> 
     <delete includeemptydirs="true" quiet="true"> 
      <fileset dir="${Igloo.reportsDir}" includes="**/*" />  
     </delete> 
     <java jar="${ws.jars}" fork="true" spawn="true" /> 
     <junit fork="yes" haltonfailure="no" printsummary="yes"> 

      <classpath refid="Igloo.path" /> 
      <batchtest todir="${Igloo.reportsDir}" fork="true"> 
       <fileset dir="${Igloo.dest}"> 
        <include name="ABMTLinks.class" /> 
       </fileset> 
      </batchtest> 
     <formatter type="xml" /> 
     <classpath refid="Igloo.path" /> 
     </junit> 

      <junitreport todir="${Igloo.reportsDir}"> 
       <fileset dir="${Igloo.reportsDir}"> 
        <include name="TEST-*.xml" /> 
       </fileset> 
       <report todir="${Igloo.reportsDir}"/>  
      </junitreport> 
    </target> 
</project> 

請幫助。 error message

+0

如何ABMTSuite樣子? – oers 2012-07-19 08:50:08

+0

該代碼來自硒,我添加了一個條件只是爲了追蹤如果測試用例失敗/通過,BTW只是忽略@Test裏面的代碼,我只是記錄使用硒,只在谷歌網站,然後鍵入一個搜索關鍵字和多數民衆贊成它。正如你所看到的,我強迫這個測試通過了if-else條件 - 只是一個測試,在這裏它會調用PieChart.class生成一個餅圖並保存到指定的位置。希望我回答你的問題。對不起我的英語不好。 – 2012-07-19 13:37:04

+0

在你執行ABMTSuite的時候,請顯示套件的代碼。或者改變ant以使用ABMTLinks。 – oers 2012-07-19 13:45:05

回答

1

我已經解決了我的問題,謝謝你的幫助..我只是排除了PieChart.class,因爲每當我運行junit時,因爲PieChart.class是一個工具類,所以它無法運行螞蟻..對XML我只是排除類,<exclude name = "PieChart.class" />和公正,以確保我只是說<exclude name="PieChart.java" />

相關問題