Testowanie repozytoriów/dao

Testowanie repozytoriów/dao
ZA
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 5 lat
  • Postów:174
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.

Kopiuj
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

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0
  1. Czemu nie użwasz JPA?
  2. Czemu nie używasz SpringData?
  3. Czemu przynajmniej nie masz GenericDao?

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
ZA
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 5 lat
  • Postów:174
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
caer
  • Rejestracja:około 11 lat
  • Ostatnio:11 miesięcy
  • Postów:465
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.

edytowany 1x, ostatnio: caer
SZ
Co ci daje DBUnit podczas testowania?
caer
łatwiejszy config i asercje choćby
SW
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 4 lata
  • Postów:426
0

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

caer
HSQL może emulować inne dialekty
ZA
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 5 lat
  • Postów:174
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.