【发布时间】:2017-04-13 21:16:39
【问题描述】:
我正在尝试在我的测试失败的第一种情况下编写一些测试,而我知道我的代码有效:
import org.junit.*;
import static org.junit.Assert.*;
import java.sql.Connection;
import java.sql.SQLException;
public class TestGetConnection {
@Test
public void getConnection() throws SQLException{
GetConnection getCon = new GetConnection();
Connection con = getCon.getConnection();
assertEquals("com.mysql.cj.jdbc.ConnectionImpl@3aa9e816",con.toString());
}
}
这是 GetConnection 类:
package BE.Intec.Daniel.BabySteps;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Scanner;
public class GetConnection {
private String url2 = "jdbc:mysql://";
private String url;
private String user;
private String timezone = "?useUnicode=true&use JDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CET";
private String password;
private Scanner input = new Scanner(System.in);
public GetConnection() {
System.out.println("Geef het adres zonder http:// of www. van de database in aub.");
url2 += input.nextLine();
url = url2 + timezone;
System.out.println("Geef de username in aub.");
user = input.nextLine();
System.out.println("Geef het paswoord in aub.");
password = input.nextLine();
}
public String setUrl(String dbName) {
url2 += dbName;
return url = url2 + timezone;
}
public java.sql.Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
}
在第二个测试中,我首先使用模拟对象来获取连接,但不知何故,在尝试创建数据库之前,之前并没有被执行。
package BE.Intec.Daniel.BabySteps;
import static org.junit.Assert.*;
import java.sql.Connection;
import java.sql.SQLException;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
public class TestCreateDatabase {
private Connection con;
@Before
public void init() throws SQLException{
GetConnection getcon = EasyMock.createMock(GetConnection.class);
con = getcon.getConnection();
}
@Test
public void createDatabase(){
CreateDataBase newDb = new CreateDataBase(con);
String result = newDb.createDataBase();
assertEquals("Uw databse werd succesvol gecreëerd",result);
}
}
这里是 CreateDatabase 类:
package BE.Intec.Daniel.BabySteps;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Scanner;
import com.mysql.cj.api.jdbc.Statement;
public class CreateDataBase {
private Connection con;
private java.sql.Statement stat;
private String databaseName;
public CreateDataBase(Connection con) {
this.con = con;
createDataBase();
}
public String createDataBase() {
Scanner in = new Scanner(System.in);
System.out.println("Hoe moet uw database noemen?");
databaseName = in.nextLine();
String succes = "";
try {
stat = con.createStatement();
String statement = "CREATE DATABASE IF NOT EXISTS " + databaseName;
stat.executeUpdate(statement);
succes ="Uw databse werd succesvol gecreëerd";
} catch (SQLException e) {
System.out.println("Er ging iets fout");
e.printStackTrace();
}
return succes;
}
public String getDatabaseName() {
return databaseName;
}
}
知道为什么我的测试失败了吗? 任何帮助将不胜感激 别介意我的英语,我是比利时人,所以不是本地人。
【问题讨论】:
标签: java database junit mocking easymock