Как исправить ошибку из моего класса юнит-тестирования? - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть домашняя работа, где мне нужно создать веб-приложение J2EE.В моей команде мне нужно подготовить юнит-тесты, но в них много ошибок, и я не знаю, как их решить, поэтому я хотел бы попросить о помощи, пожалуйста.

Класс Customer:

public class Customer {

private int CustomerID;
private String email;

public int getCustomerID() {
    return CustomerID;
}

public void setCustomerID(int CustomerID) {
    this.CustomerID = CustomerID;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

}

Класс CustomerDAO:

private final DataSource myDataSource;
public CustomerDAO(DataSource dataSource) {
    this.myDataSource = dataSource;
}


public Customer LoginCustomer(int customerID, String email) throws DAOException {
    Customer result = null;

    String sql = "SELECT * FROM CUSTOMER WHERE CUSTOMER_ID = ? AND EMAIL = ?";
    try (Connection connection = myDataSource.getConnection(); 
        PreparedStatement stmt = connection.prepareStatement(sql)) {

        stmt.setInt(1, customerID);
                    stmt.setString(2, email);

        try (ResultSet rs = stmt.executeQuery()) {
            if (rs.next()) {
                String name = rs.getString("NAME");
                String address = rs.getString("ADDRESSLINE1");

                result = new Customer();
                                    result.setCustomerID(customerID);
                                    result.setEmail(email);
            } 
        }
    }  catch (SQLException ex) {
        Logger.getLogger("DAO").log(Level.SEVERE, null, ex);
        throw new DAOException(ex.getMessage());
    }

    return result;
}
}

Класс DAO:

public class DAO {

private final DataSource myDataSource;

public DAO(DataSource dataSource) {
    this.myDataSource = dataSource;
}
    public int addOrder(int ordernum, int idcustomer, int   idproduct, int quantity, int shippingcost, Date salesDate, Date shippingDate, String company) throws SQLException {
    int result = 0;
    String sql = "INSERT INTO PURCHASE_ORDER VALUES=(?,?,?,?,?,?,?,?) ";
    try (Connection connection = myDataSource.getConnection();
            PreparedStatement stmt = connection.prepareStatement(sql)) {
        stmt.setInt(1, ordernum);
        stmt.setInt(2, idcustomer);
        stmt.setInt(3, idproduct);
        stmt.setInt(4, quantity);
        stmt.setInt(5, shippingcost);
        stmt.setDate(6, (java.sql.Date) salesDate);
        stmt.setDate(7, (java.sql.Date) shippingDate);
        stmt.setString(8, company);
        result = stmt.executeUpdate();
    }
    return result;
}
public int deleteOrder(int OrderNum) throws SQLException {
    int result = 0;
    String sql = "DELETE FROM PURCHASE_ORDER WHERE ORDER_NUM = ?";
    try (Connection connection = myDataSource.getConnection();
            PreparedStatement stmt = connection.prepareStatement(sql)) {
        stmt.setInt(1, OrderNum);
        result = stmt.executeUpdate();
    }
    return result;
}
public int changeOrder(int Qte, int ordernum) throws SQLException {
    int result=0;
    String sql = "UPDATE PURCHASE_ORDER SET QUANTITY = ? WHERE ORDER_NUM=?";
    try (Connection connection = myDataSource.getConnection();
            PreparedStatement stmt = connection.prepareStatement(sql)) {
        stmt.setInt(1, Qte);
        stmt.setInt(2, ordernum);
        result=stmt.executeUpdate();
    }
    return result;
}

Класс DataSouceFactory:

public class DataSourceFactory {

public enum DriverType {
    embedded, server
};

// Choic du type de driver : embedded ou serveur
private static final DriverType TYPE = DriverType.embedded;

/**
 * Renvoie la source de données (server ou embbeded)
 *
 * @return la source de données
 */
public static DataSource getDataSource() {

    ds.setDatabaseName("sample");
    ds.setUser("app");
    ds.setPassword("app");
    // The host on which Network Server is running
    ds.setServerName("localhost");
    // port on which Network Server is listening
    ds.setPortNumber(1527);
    return ds;
}

}

Класс Product: открытый класс Product {

private int idproduct;
private int idmanufacturer;
private String productcode;
private int purchasecost;
private int quantityonhand;
private int markup;
private String available;
private String description;

public Product(int idproduct, int idmanufacturer, String productcode, int purchasecost, int quantityonhand, int markup, String available, String description){
    this.idproduct=idproduct;
    this.idmanufacturer=idmanufacturer;
    this.productcode=productcode;
    this.purchasecost=purchasecost;
    this.quantityonhand=quantityonhand;
    this.markup=markup;
    this.available=available;
    this.description=description;
}

//GETTER

public int getIdProduct() {
    return idproduct;
}

public int getIdManufacturer(){
    return idmanufacturer;
}

public String getProductCode(){
    return productcode;
}

public int getPurchaseCost(){
    return purchasecost;
}

public int getQuantityOnHand(){
    return quantityonhand;
}

public int getMarkup(){
    return markup;
}

public String getAvailable(){
    return available;
}

public String getDescription(){
    return description;
}
}

Класс PurchaseOrder:

public class PurchaseOrder {

private int ordernum;
private int idcustomer;
private int idproduct;
private int quantity;
private int shippingcost;
private Date salesDate;
private Date shippingDate;
private String company;

public PurchaseOrder(int ordernum, int idcustomer, int idproduct, int quantity, int shippingcost, Date salesDate, Date shippingDate, String company) {
    this.ordernum=ordernum;
    this.idcustomer=idcustomer;
    this.idproduct=idproduct;
    this.quantity=quantity;
    this.shippingcost=shippingcost;
    this.salesDate=salesDate;
    this.shippingDate=shippingDate;
    this.company=company;
}

//GETTER

public int getOrderNumber() {
    return ordernum;
}

public int getIdCustomer() {
    return idcustomer;
}

public int getIdProduct(){
    return idproduct;
}

public int getShippingCost(){
    return shippingcost;
}


public Date getSalesDate() {
    return salesDate;
}

public Date getShippingDate() {
    return shippingDate;
}

public String getCompany() {
    return company;
}



}

Класс DAOException:

public class DAOException extends Exception {

/**
 * Creates a new instance of <code>DAOException</code> without detail
 * message.
 */
public DAOException() {
}

/**
 * Constructs an instance of <code>DAOException</code> with the specified
 * detail message.
 *
 * @param msg the detail message.
 */
public DAOException(String msg) {
    super(msg);
}
}

Класс модульного тестирования:

public class DAOTest {

private DAO myDAO;
private DataSource myDataSource;
private static Connection myConnection;

/**
 * Test for the data base
 */
@Before
//Test la création de la BDD.
public void createBDD() throws SQLException {
    myDataSource = getDataSource();
    myConnection = myDataSource.getConnection();
    myDAO = new DAO(myDataSource);
}

@After
//Test la destruction de la BDD.
public void deleteBDD() throws SQLException {
    myConnection.close();
    myDAO = null;
}

@Test
//Test le remplissage de la BDD à partir d'un fichier sql.
private void fillBDD(String file, Connection myConnection) throws SQLException {
    String path = DAOTest.class.getResource(file).getFile();
    SqlFile fileSQL = new SqlFile(new File(path));
    fileSQL.setConnection(myConnection);
    fileSQL.execute();
    fileSQL.closeReader();
}

/**
 * Test for the class dataSourceFactory
 */
//Test l'acquisition de la source de donnée.
@Test
public void getDataSource() throws DAOException {
    org.hsqldb.jdbc.JDBCDataSource ds = new org.hsqldb.jdbc.JDBCDataSource();
    ds.setDatabase("jdbc:hsqldb:mem:testcase;shutdown=true");
    ds.setUser("username");
    ds.setPassword("password");
    return ds;
}

/**
 * Test for the class CustomerDAO
 */
@Test
// Test si le login fonctionne
public void logIN() throws DAOException {
    int customerID = 1;
    String email = "test@example.com";
    assertEquals(customerID, myDAO.identification(email));
}

/**
 * Test for the class ???
 */
@Test
//Test le calcule du prix du produit.
public void finalPrice() {
    float price = 10;
    int quantity = 1;
    float discountRate = 0;
    float shippingcost = 10;
    float markup = 0;
    assertEquals(price * quantity * 0.01 * (1 - discountRate) + shippingcost, "Méthode qui calcule le prix final");
}
}

Я не знаю, может ли это помочь, но мы сделали для этого немного мерзавца: https://github.com/Selena00/ProjetTechnoWeb

Ну, первая проблема, с которой я столкнулся в классе юнит-тестирования, заключается в том, чтокогда я выполняю «throws DAOException», у меня возникает ошибка, определяющая его местоположение.

То же самое с «private DAO myDAO», это говорит о том, что символ DAO не может быть найден.И эта проблема присутствует везде, где я создаю новый «DAO».Опять же, у меня проблема с тестом «fillBDD», где он снова говорит, что символ SqlFile не найден.

Наконец, в тесте «getDataSource» в первой строке говорится, что пакет org.hsqlsb.jsbc не существует.

Во всем вышеупомянутом случае единственное, что он предложил мне, - это поиск зависимостей в репозиториях Maven, но безуспешно.

Впоследствии, если некоторые людимогу дать мне несколько советов о том, как делать тесты: "addOrder", "deleteOrder" и "changeOrder", я был бы очень благодарен.Для этих трех тестов я не знаю, с чего начать: /.

Заранее спасибо тем, кто нашел время, чтобы помочь мне: D.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...