Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2013, 20:07   #1
Annushka555
 
Регистрация: 03.08.2013
Сообщений: 3
Вопрос Notebook (Java)

Ребят, помогите, пожалуйста.
Я написала небольшую записную книжку (на 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"));
 
    }
}
 
А вот это мои тесты:
Annushka555 вне форума Ответить с цитированием
Старый 03.08.2013, 20:15   #2
Annushka555
 
Регистрация: 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"));
    }
}
 
Очень жду ваших советов!
Annushka555 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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