Testowanie repozytoriów/dao

0

Witajcie,
Ciąg dalszy mojej przygody z testowaniem. Zrobiłem trochę refactoringów w moim projekcie i powstała klasa taka jak poniżej.

public class ItemLevelRepositoryImpl extends AbstractRepository<ItemLevel> implements ItemLevelRepository {

    public ItemLevelRepositoryImpl(DatabaseHelper databaseHelper) {
        super(databaseHelper);
    }

    @Override
    public List<ItemLevel> findByItemName(String name) {
        return getDatabaseHelper().select("SELECT id, itemName, level, damage FROM ItemLevel WHERE itemName = ?",
                new ItemLevelRowMapper(), name);
    }

    @Override
    public ItemLevel findById(Integer id) {
        return getDatabaseHelper().selectSingle("SELECT id, itemName, level, damage FROM ItemLevel WHERE id = ?",
                new ItemLevelRowMapper(), id);
    }

    @Override
    public void delete(ItemLevel itemLevel) {
        getDatabaseHelper().update("DELETE FROM ItemLevel WHERE id = ?", itemLevel.getId());
    }

    @Override
    public void persist(ItemLevel entity) {
        getDatabaseHelper().update("INSERT INTO ItemLevel (itemName, level, damage) VALUES (?, ?, ?)",
                entity.getItemName(), entity.getLevel(), entity.getDamage());
        entity.setId(selectLastInsertId());
    }

    @Override
    public void update(ItemLevel entity) {
        getDatabaseHelper().update("UPDATE ItemLevel SET itemName = ?, level = ?, damage = ? WHERE id = ?",
                entity.getItemName(), entity.getLevel(), entity.getDamage(), entity.getId());
    }

    protected static class ItemLevelRowMapper implements DatabaseHelper.RowMapper<ItemLevel> {
        @Override
        public ItemLevel map(ResultSet resultSet) throws SQLException {
            ItemLevel itemLevel = new ItemLevel();
            itemLevel.setId(resultSet.getInt("id"));
            itemLevel.setItemName(resultSet.getString("itemName"));
            itemLevel.setLevel(resultSet.getInt("level"));
            itemLevel.setDamage(resultSet.getFloat("damage"));
            return itemLevel;
        }
    }

}

Jak widać w klasie nie ma żadnej logiki.
Powinienem do niej pisać unit testy?
Jak tak to jakie?
Sprawdzające kolejność parametrów?

Pozdrawiam

0
  1. Czemu nie użwasz JPA?
  2. Czemu nie używasz SpringData?
  3. Czemu przynajmniej nie masz GenericDao?
0
  1. Nie chce dołączać do malutkiego pluginu wielkiego JPA
  2. Nie chce dołączać do malutkiego pluginu wielkiego SpringData
  3. Trzeba napisać, chodzi mi chwilowo o ten kod który mam
1

Możesz stworzyć bazę danych w pamięci (np. HyperSQL) i użyć DBUnit do testowania. Nie wiem czy to jeszcze testy jednostkowe czy już tylko funkcjonalne/integracyjne, ale to chyba najmniejsza rzecz jaką można sensownie testować w takim DAO.

0

Oczywiscie nalezy pamietac, ze bez JPA/Hibernate moze byc ciezko z dialektami baz.

0

Dokończyłem mój maluśki projekt, poniżej link do jego githuba.
Co poprawić w testach?

https://github.com/Zaprogramowany27/sword-levels

1 użytkowników online, w tym zalogowanych: 0, gości: 1