![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 03.08.2013
Сообщений: 3
|
![]()
Ребят, помогите, пожалуйста.
Я написала небольшую записную книжку (на java). У меня есть класс, который создает базу данных в котором есть методы, с помощью которых можно добавить новый контакт, проверить существует ли уже контакт, есть ли такое имя, телефон, есть метод который удаляет контакт. Теперь мне нужно сделать параметрические тесты, т.к. у меня один интерфейс и 4 класса, которые реализуют этот интерфейс. Сделала. Но почему-то тесты на все классы проходят, а вот на этот класс пишет java.lang.NullPointerException Но когда я проверяю, создавая в main объект этого класса, то все работает.. В чем же дело? Это тот самый класс, по которому не проходят тесты Код HTML:
import java.io.File; import java.sql.*; public class SQLiteDb implements NotebookDb { private File dbfile; // этот файл нужен для проверки существования файла базы данных private Connection db; private PreparedStatement prep; private Statement stat; SQLiteDb(final String fileName) { // создаем базу данных try { dbfile = new File(fileName); if (!dbfile.exists()){ dbfile.createNewFile(); db = DriverManager.getConnection("jdbc:sqlite:" + fileName); stat = db.createStatement(); stat.executeUpdate("drop table if exists people;"); // people - название таблицы db stat.executeUpdate("create table people (name, phone, address, age);"); prep = db.prepareStatement( "insert into people values (?, ?, ?, ?); "); } } catch (Exception er) { System.out.println("Error has arised here:" + er); } } @Override public boolean isNameExists(String name) throws Exception { ResultSet rs = stat.executeQuery( "select * from people;" ); while (rs.next()) { if (rs.getString("name").equals(name)){ return true; } } return false; } @Override public void addRecord(String data) throws Exception { Record rec = new Record(data); System.out.println(rec.name); if (isNameExists(rec.name)) { throw new Exception("This name already exists."); } else{ prep.setString(1, rec.name); prep.setString(2, rec.phone); prep.setString(3, rec.address); prep.setInt(4, rec.age); prep.addBatch(); db.setAutoCommit(false); prep.executeBatch(); db.setAutoCommit(true); } } @Override public void remove(String name) throws Exception { String query = "delete from people where name = ?"; PreparedStatement preparedStmt = db.prepareStatement(query); preparedStmt.setString(1, name); preparedStmt.execute(); } @Override public String searchByName(String name) throws Exception { System.out.println("step 1"); ResultSet rs = stat.executeQuery( "select * from people;" ); System.out.println("Step 2"); while (rs.next()) { System.out.println("Step 3"); if (rs.getString("name").equals(name)){ return name+" "+ rs.getString("phone")+" "+rs.getString("address")+" "+rs.getInt("age") ; } } System.out.println("NULL )))"); return null; } @Override public String searchByPhone(String phone) throws Exception { ResultSet rs = stat.executeQuery( "select * from people;" ); while (rs.next()) { if (rs.getString("phone").equals(phone)){ return rs.getString("name"); } } return null; } public static void main(String[] args) throws Exception { SQLiteDb sq = new SQLiteDb("filename"); //String info = "name1 phone1 address1 19"; // sq.addRecord(info); // System.out.println(sq.searchByName("address1")); System.out.println(sq.searchByName("name")); } } |
![]() |
![]() |
![]() |
#2 |
Регистрация: 03.08.2013
Сообщений: 3
|
![]()
Вот это некоторые из моих тестов:
Код HTML:
import com.sun.org.apache.xpath.internal.functions.FuncSubstringAfter; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.Collection; import java.util.LinkedHashMap; import static junit.framework.Assert.*; @RunWith(Parameterized.class) public class Param_Test { @Rule public TemporaryFolder folder = new TemporaryFolder(); private File dbFile; private interface NotebookDbFactory { NotebookDb create(final String fileName) throws IOException; } @Before public void setUp() throws Exception { dbFile = folder.newFile("filename.txt"); } @Parameters public static Collection getParameters() throws IOException { Object[] p1 = {new NotebookDbFactory() { @Override public NotebookDb create(String fileName) throws IOException { return new NotebookTxtDb(fileName); } }}; Object[] p2 = {new NotebookDbFactory() { @Override public NotebookDb create(String fileName) throws IOException { return new NotebookTxtMappedDb(fileName); } }}; Object[] p3 = {new NotebookDbFactory() { @Override public NotebookDb create(String fileName) throws IOException { return new NotebookTSVDb(fileName); } }}; Object[] p4 = {new NotebookDbFactory() { @Override public NotebookDb create(String fileName) throws IOException { return new SQLiteDb(fileName); } }}; return Arrays.asList(p1, p2, p3, p4); } //================================================================== // Name tests //================================================================== // Search @Test public void sampleTest() throws Exception { } @Test public void nameSearchEmpty() throws Exception { final NotebookDb notebookDb = facotry.create(dbFile.getAbsolutePath()); assertNull(notebookDb.searchByName("name1")); } @Test public void nameSearchNonexistent() throws Exception { final NotebookDb notebookDb = facotry.create(dbFile.getAbsolutePath()); notebookDb.addRecord("name1 phone1 address1 19"); assertNull(notebookDb.searchByName("name2")); } @Test public void nameSearchExistent() throws Exception { final NotebookDb notebookDb = facotry.create(dbFile.getAbsolutePath()); final String info = "name1 phone1 address1 19"; notebookDb.addRecord(info); final String actual = notebookDb.searchByName("name1"); assertEquals(info, actual); } @Test public void nameSearchNonexistentLikeExistedAddress() throws Exception { final NotebookDb notebookDb = facotry.create(dbFile.getAbsolutePath()); final String info = "name1 phone1 address1 19"; notebookDb.addRecord(info); assertNull(notebookDb.searchByName("address1")); } @Test public void nameSearchNonexistentLikeExistedPhone() throws Exception { final NotebookDb notebookDb = facotry.create(dbFile.getAbsolutePath()); final String info = "name1 phone1 address1 19"; notebookDb.addRecord(info); assertNull(notebookDb.searchByName("phone1")); } @Test(expected = Exception.class) public void nameAddDuplicate2() throws Exception { final NotebookDb notebookDb = facotry.create(dbFile.getAbsolutePath()); notebookDb.addRecord("name1 phone1 address1 19"); notebookDb.addRecord("name1 phone2 address2 20"); } //------------------------------------------------------------------ // Remove @Test public void nameRemoveNonexistent() throws Exception { final NotebookDb notebookDb = facotry.create(dbFile.getAbsolutePath()); notebookDb.addRecord("name1 phone1 address1 19"); notebookDb.remove("name2"); assertNotNull(notebookDb.searchByName("name1")); } @Test public void nameRemoveExistent() throws Exception { final NotebookDb notebookDb = facotry.create(dbFile.getAbsolutePath()); notebookDb.addRecord("name1 phone1 address1 19"); notebookDb.remove("name1"); assertNull(notebookDb.searchByName("name1")); assertNull(notebookDb.searchByPhone("phone1")); } } |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Notebook | Devolarium | Общие вопросы Delphi | 6 | 19.04.2012 23:54 |
программа notebook | kira[:D] | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 11.04.2011 16:51 |
программа notebook | катюська | Помощь студентам | 0 | 04.04.2011 10:41 |
Перекрасить Tabbed NOtebook | doniyor | Компоненты Delphi | 0 | 31.03.2010 21:29 |
Сращивание TreeView c NoteBook | SanekIrk | Компоненты Delphi | 0 | 16.10.2009 10:00 |