Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
2 / 1 / 1
Регистрация: 24.04.2010
Сообщений: 76
1

Ошибка при запуске нескольких тестов сразу

18.01.2019, 18:21. Показов 1685. Ответов 3

Author24 — интернет-сервис помощи студентам
Есть таблица, которая логируется с помощью hibernate envers. Пишу тест на несколько таких таблиц. Вот содержимое класса одного из тестов.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@SpringBootTest
@RunWith(SpringRunner.class)
public class CompanyAuditStorageTest {
    @Autowired
    private CompanyRepository companyRepository;
    @Autowired
    private EntityManagerFactory entityManagerFactory;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @MockBean
    private AuditorAware<String> auditorAware;
 
    private Company company;
 
    @Before
    public void setUp() throws Exception {
        when(auditorAware.getCurrentAuditor()).thenReturn(Optional.of("user"));
 
        company = new Company();
        company.setComment("comment");
        company.setName("new Company");
        companyRepository.save(company);
    }
 
    @Test
    public void historyCorrectlyStoresTest() {
        company.setName("updated company");
        companyRepository.save(company);
 
        AuditReader auditReader = AuditReaderFactory.get(entityManagerFactory.createEntityManager());
        Company firstRevision = auditReader.find(Company.class, company.getId(), 1);
        assertThat(firstRevision.getName(), is("new Company"));
        assertThat(firstRevision.getChangedAt(), notNullValue());
        assertThat(firstRevision.getChangedBy(), is("user"));
 
        Company secondRevision = auditReader.find(Company.class, this.company.getId(), 2);
 
        assertThat(secondRevision.getName(), is("updated company"));
        assertThat(secondRevision.getChangedAt(), notNullValue());
        assertThat(secondRevision.getChangedBy(), is("user"));
    }
 
    @After
    public void tearDown() throws Exception {
        Long companyId = company.getId();
        jdbcTemplate.execute("delete from companies_event_log where id = " + companyId);
        companyRepository.deleteById(companyId);
    }
}
Таких классов 3. Остальные 2 аналогичные этому, только другая таблица, другая сущность и репозитори. Если каждый класс запускать на выполнение по отдельности, то всё работает, тесты зелёные. Стоит запустить сразу все 3 - первый проходит, остальные красные! Как правило, ругается на самую первую проверку в firstRevision - говорит, что NullPointerException. Как исправить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2019, 18:21
Ответы с готовыми решениями:

Ошибка SIGABRT сразу при запуске
Здравствуйте. Помогите пожалуйста, я в недоумении. Сразу при запуске вылетает сообщение о том,...

В чем ошибка? При запуске программы открывается консоль и сразу ошибка о завершении программы
К тому же выдает warning: deprecated conversion from string constant to 'char*' . #include...

Ноут вырубается при запуске некоторых игр (Fallout 3), а также тестов FurMark и 3DMark Demo
Здравствуйте! Проблема в следующем: Ноут вырубается при запуске некоторых игр(Fallout 3), а также...

VirtualBox закрывается сразу при запуске
Проблема такая: • я устанавливаю VirtualBox и ничего на нём не запускаю - он работает нормально,...

3
2 / 1 / 1
Регистрация: 24.04.2010
Сообщений: 76
21.01.2019, 17:47  [ТС] 2
Понимаю, что ошибка связана с тем, что несколько ресурсов используются одновременно при запуске всех тестов...как-то так. Но как исправить?

Добавлено через 6 часов 19 минут
Вообще, обычно в @After удаляется всё из таблиц, с которыми в тесте работал и всё функционирует, тесты зеленятся. Но здесь почему-то это не помогает.
Также пробовал добавить @DirtyContext над классом - тоже безуспешно

Добавлено через 2 часа 12 минут
Нашёл проблему! При аудите есть таблица - revinfo, с ней объединение по внешнему ключу. И, когда проходят все тесты разом, поле rev автоинкрементится и почему-то не откатывается!!!

Почистить в After её не удастся, т.к. зависимых таблиц слишком много. Поэтому такое решение:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    @Test
    public void historyCorrectlyStoresTest() {
        company.setName("updated company");
        companyRepository.save(company);
 
        AuditReader auditReader = AuditReaderFactory.get(entityManagerFactory.createEntityManager());
 
        List<Number> revisionsListIds = auditReader.getRevisions(Company.class, company.getId());
 
        Company firstRevision = auditReader.find(Company.class, company.getId(), revisionsListIds.get(0));
        assertThat(firstRevision.getName(), is("new Company"));
        assertThat(firstRevision.getChangedAt(), notNullValue());
        assertThat(firstRevision.getChangedBy(), is("user"));
 
        Company secondRevision = auditReader.find(Company.class, this.company.getId(), revisionsListIds.get(1));
 
        assertThat(secondRevision.getName(), is("updated company"));
        assertThat(secondRevision.getChangedAt(), notNullValue());
        assertThat(secondRevision.getChangedBy(), is("user"));
    }
0
25 / 21 / 6
Регистрация: 10.12.2018
Сообщений: 115
26.01.2019, 20:07 3
а почему не написал что именно тестируешь?
0
2 / 1 / 1
Регистрация: 24.04.2010
Сообщений: 76
28.01.2019, 09:20  [ТС] 4
Цитата Сообщение от JavaDoc Посмотреть сообщение
а почему не написал что именно тестируешь?
Цитата Сообщение от maksimka2112 Посмотреть сообщение
Есть таблица, которая логируется с помощью hibernate envers. Пишу тест на несколько таких таблиц.
Тестирую логику заполнения таблиц для логирования
0
28.01.2019, 09:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2019, 09:20
Помогаю со студенческими работами здесь

Скрыть форму сразу при запуске
Добрый день, подскажите пожалуйста, как можно скрыть фотму сразу после запуска ? Я делал так:...

При запуске компьютер сразу выключается
Здравствуйте, подскажите что делать, как быть...!? На компьютере стоит windows xp, при включении...

При запуске компа он сразу вырубается
Случилась такая проблема. При запуске компа он сразу вырубается. А когда проц верх ногами ставлю он...

Программа при запуске сразу закрывается
при запуске программа сразу закрывается, помогите найти ошибку Поставленная задача: Составить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru