自从我读完
关于测试here 的烧瓶文档中的未经测试的应用程序已损坏
我一直在编制我的一些应用程序列表。
当我写一条新路线时,我现在有一个烧瓶网络应用程序,我只是写一个import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.util.*;
import javax.swing.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JRViewer;
public class JasperReportInterface extends JFrame {
private static final long serialVersionUID = 5430239481089683268L;
private JComboBox<MonthItem> selectMonts;
public JasperReportInterface() {
super("Jasper Report Interface");
jbInit();
}
private void jbInit() {
this.getContentPane().setLayout(new GridBagLayout());
selectMonts = new JComboBox<MonthItem>();
selectMonts.addItem(new MonthItem(3));
selectMonts.addItem(new MonthItem(6));
this.getContentPane().add(new JLabel("Select month:"), new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 2, 2,
2), 0, 0));
this.getContentPane().add(selectMonts, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(2, 2, 2,
2), 0, 0));
JButton btnReport = new JButton("Generate report");
btnReport.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btnReport_actionPerformed(e);
}
});
this.getContentPane().add(btnReport,new GridBagConstraints(0, 1, 2, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(2, 2, 2,
2), 0, 0));
}
protected void btnReport_actionPerformed(ActionEvent e) {
String jasperFilePath = "jasper/myJasperFile.jrxml";
Map<String, Object> parameters = new HashMap<String, Object>();
Object v = selectMonts.getSelectedItem();
if (v instanceof MonthItem) {
parameters.put("parameter1", ((MonthItem) v).getMonth());
}
Connection conn = null; // Pass the connection to database or datasource
JasperPrint report;
try {
JasperDesign jasperDesign = JRXmlLoader.load(jasperFilePath);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
report = JasperFillManager.fillReport(jasperReport, parameters, conn);
} catch (JRException e1) {
e1.printStackTrace();
JOptionPane.showMessageDialog(this, "Error creating report: " + e1.getMessage());
return;
}
JRViewer jrv = new JRViewer(report);
JDialog viewer = new JDialog(this);
viewer.setTitle("Print preview");
viewer.getContentPane().add(jrv);
viewer.pack();
viewer.setSize(new Dimension(840, 600));
viewer.setLocationRelativeTo(null);
viewer.setVisible(true);
}
class MonthItem {
private int month;
protected MonthItem(int month) {
this.month = month;
}
public String toString() {
return month + " months";
}
public int getMonth() {
return month;
}
}
public static void main(String[] args) {
JasperReportInterface ri = new JasperReportInterface();
ri.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ri.setSize(400,100);
ri.setLocationRelativeTo(null);
ri.setVisible(true);
}
}
,post,put等来测试路线。
这是一个不错的选择吗?或者我应该尝试通过flask's documentation所说的进行测试,如果是,为什么?
答案 0 :(得分:0)
从根本上说,它是相同的概念,您正在运行功能测试。但是,你有一个先决条件,一个在某个地方运行的实时应用程序(如果我做对了)。他们创建了一个虚假的应用程序(也就是模拟),因此您可以在不实时的情况下对其进您希望在CI环境中运行测试。
在我看来,它比现场系统更好。您当前的方法在本地计算机上消耗更多资源,因为您需要运行整个系统来测试某些内容(即至少是数据库和应用程序本身)。在他们的方法中他们没有,假实例不需要有真实数据,因此没有连接到数据库或任何其他外部依赖。
我建议你切换到他们的测试,最后你会喜欢它。