我试着编写我的第一个测试函数,这两个函数很简单。
我要测试的第一个函数是create函数:
public Milestone create(Milestone milestone) throws ClassNotFoundException, SQLException {
String id = UUID.randomUUID().toString();
milestone.setId(id);
Class.forName("org.h2.Driver");
Connection connection = DriverManager.getConnection("jdbc:h2:~/dao_db", "sa", "");
PreparedStatement prepareStatement = connection.prepareStatement("INSERT INTO MILESTONE VALUES(?, ?,?)");
prepareStatement.setString(1, id);
prepareStatement.setString(2, milestone.getName());
prepareStatement.setString(3, milestone.getDescription());
prepareStatement.executeUpdate();
connection.close();
return milestone;}第二个是更新函数:
public Milestone update(Milestone milestone) throws ClassNotFoundException, SQLException{
Class.forName("org.h2.Driver");
Connection connection = DriverManager.getConnection("jdbc:h2:~/dao_db", "sa", "");
PreparedStatement prepareStatement = connection.prepareStatement("UPDATE MILESTONE SET NAME=?, DESCRIPTION = ? WHERE ID=?");
prepareStatement.setString(1, milestone.getName());
prepareStatement.setString(2, milestone.getDescription());
prepareStatement.setString(3, milestone.getId());
prepareStatement.executeUpdate();
connection.close();
return milestone;};然后,我尝试编写这两个函数:
import static org.junit.Assert.*;
import java.sql.SQLException;
import org.junit.Test;
import model.Milestone;
public class MilestoneDAOImplTest {
@Test
public void createTest() throws ClassNotFoundException, SQLException {
MilestoneDAOImpl ms = new MilestoneDAOImpl();
Milestone milestone = new Milestone("test","test");
assertNotNull("milestone created", ms.create(milestone)); }
@Test
public void updateTest() throws ClassNotFoundException, SQLException {
MilestoneDAOImpl ms = new MilestoneDAOImpl();
Milestone milestone = new Milestone("test","test");
assertNotNull("milestone updated", ms.update(milestone)); }请告诉我这两个测试函数是否正确。因为我发现做这样的测试有点毫无意义。例如,在我的createTest函数中,唯一的验证是
assertNotNull("milestone created", ms.create(milestone));但我也可以通过执行相同的操作(相同的函数ms.create(里程碑))在我的主类中验证这一点。那么,这种测试的真正用途是什么呢?(如果这些测试是正确的?)我没有看到真正的不同(我是Java新手)。
发布于 2016-03-28 08:55:27
在您的测试类中,您还可以在1以下进行检查。对于每个抛出的异常,您可以断言是否在特定情况下抛出了特定异常。就像。
@Test
public void createTest() throws ClassNotFoundException, SQLException {
try{
MilestoneDAOImpl ms = new MilestoneDAOImpl();
Milestone milestone = new Milestone("test","test");
assertNotNull("milestone updated", ms.update(milestone));
}catch (ClassNotFoundException e1)
{
// do some assertions based on scenarios like some relevent jars are missed in classpath
}
catch (SQLException e2)
{
// do some assertions like wrong connection URL etc.
}
}并从您的测试方法调用它来断言例如。
@Test
public void updateTest() throws ClassNotFoundException, SQLException {
MilestoneDAOImpl ms = new MilestoneDAOImpl();
Milestone milestone = new Milestone("test","test");
assertNotNull("milestone updated", ms.update(milestone));
Milestone milestone1=ms.select(milestone.getId());
assertEquals(milestone1.getName(),milestone.getName());
assertEquals(milestone1.getdescrition(),milestone.getDescription());
}希望这能有所帮助。
https://stackoverflow.com/questions/36257780
复制相似问题