2

我是这里的新手。

我的问题是:是否可以在一个 Java 类中运行这些类?

@RunWith(Suite.class)
@Suite.SuiteClasses({
   Test.class,
   Chart.class,
})

注意:
Test.class-> 这是一个Junit 测试类
Chart.class-> 这是一个Java 应用程序类

我希望我的问题很清楚。我的英语并不完全好。

此代码适用于 Java 应用程序:Chart.Class

public static class PieChart extends JFrame {


        private static final long serialVersionUID = 1L;

        public PieChart(String applicationTitle, String chartTitle) {
            super(applicationTitle);
            // This will create the dataset 
            PieDataset dataset = createDataset();
            // based on the dataset we create the chart
            JFreeChart chart = createChart(dataset, chartTitle);
            // we put the chart into a panel
            ChartPanel chartPanel = new ChartPanel(chart);
            // default size
            chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
            // add it to our application
            setContentPane(chartPanel);
            // it will save the chart on the specified location
            String fileLocation = "C:/temp/pieChartReport.jpg";
            saveChart(chart, fileLocation);   

        }

        /**
         * Creates a sample dataset 
         */
        ABMTLinks abmt = new ABMTLinks();


        private  PieDataset createDataset() {
            DefaultPieDataset result = new DefaultPieDataset();
            result.setValue("Failed:", abmt.Fail);
            result.setValue("Error:", 100);
            result.setValue("Passed:", abmt.Pass);
            return result;


        }

        /**
         * Creates a chart
         */

        private JFreeChart createChart(PieDataset dataset, String title) {

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

            PiePlot3D plot = (PiePlot3D) chart.getPlot();
            plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} {1} {2}")); //Shows the total count and percentage for Failed/Passed/Error
            plot.setStartAngle(480);
            plot.setDirection(Rotation.CLOCKWISE);
            plot.setForegroundAlpha(0.5f);
            return chart;

        }

        //This will store the chart on the specified location/folder
        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, 500, 270);
            } catch (IOException e) {
                e.printStackTrace();
                System.err.println("Problem occurred creating chart.");
            }
        }



        public static void main(String[] args) {
            String pieChartTitle = "Harold's Pie Chart";
            String pieChartName = "Pie Chart";
            PieChart demo = new PieChart(pieChartName, pieChartTitle);
            demo.pack();
            demo.setVisible(true);

            } 

    }

此代码用于 JUnit 测试代码:Test.Class

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 {

      public int Fail=10, Pass=10;
      public static String
       //Declaring of variables to store the Actual values for URLs
         HMT = "http://dev.abmt.igloo.com.au/GetInvolved/Hostamorningtea/tabid/165/Default.aspx",
         DMT = "http://dev.abmt.igloo.com.au/GetInvolved/Donatetoamorningtea/tabid/141/Default.aspx";   

    @Before
    public void setUp() throws Exception {
        selenium = new DefaultSelenium("localhost", 1111, "*googlechrome", "http://dev.abmt.igloo.com.au/");
        selenium.start();
    }

    @Test
    public void testUntitled() throws Exception {
        selenium.open("/GetInvolved/tabid/114/Default.aspx");
        selenium.click("link=Get Involved");
        selenium.waitForPageToLoad("30000");

        if (URL.equals(HMT)
            && URL1.equals(DMT)
            ){

            Pass = Pass + 1;
            System.out.println("All pages redirects to each URL with no errors");           
        }
        else {
            Fail = Fail + 1;
            assertTrue("Test Case is Failed!", false);
            System.out.print("Failed");     
        }           
    }

    @After
    public void tearDown() throws Exception {   
        System.out.println(Fail + "+" + Pass);
    }   

}
4

2 回答 2

2

不,这是不可能的。

下面列出的类@Suite.SuiteClasses({})必须是有效的 Junit4 测试类。这些类至少有一个用 注释的方法@Test

于 2012-07-17T11:17:16.137 回答
0

在我看来,您只是想获得测试结果并根据它生成一些特殊报告。为什么不简单地编写一个小程序来读取 JUnit 生成的测试报告并创建您想要的图表呢?


(添加)虽然我相信你正在做的事情是朝着错误的方向前进并且没有意义,但可能有一些你可以研究的东西。

您说要调用 Chart 以根据 Test 中的信息生成饼图,您可以考虑使用 @AfterClass:

public class Test {
  private int success;
  private int fail;


  @AfterClass
  public void generateChart() {
    // generate your chart base on this.success and this.fail
  }
}

@AfterClass 将在此类中的所有测试被调用后被调用。

但是,这样做仍然毫无意义,因为单元测试的整个想法是自动完成验证等,您不应该对过程或结果进行手动检查。生成图表无助于告诉计算机什么是成功/失败。而且,你的代码对我的建议只不过是普通的单元测试报告,告诉你有多少测试用例成功/失败。为什么要做一些没有实际价值的额外事情?

于 2012-07-18T02:28:38.343 回答