testException = [null] с Hibernate и SpringMVC - PullRequest
1 голос
/ 15 января 2020

У меня есть следующий тест, который я пытаюсь запустить. В этом случае просто пустой тест, чтобы попробовать его, но по какой-то причине он не работает.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfig.class)
@Transactional
public class UserHibernateDaoTest {

    private static final long USERID = 1;
    private static final long NONEXISTENTUSERID = -1;
    private static final String FIRSTNAME = "TestFirstName";
    private static final String LASTNAME = "TestLastName";
    private static final String EMAIL = "test1@mail.com";
    private static final String PASSWORD = "TestPassword";
    private static final String PHONENUMBER = "0000000";
    private static final String ROLE = "USER";

    @PersistenceContext
    private EntityManager em;

    private UserHibernateDao userHibernateDao;  
    private JdbcTemplate jdbcTemplate;


    @Before
    @Transactional
    public void setUp() {
            this.userHibernateDao = new UserHibernateDao();
            User u;
            u = new User();
            u.setUserid(123);
            u.setFirstName(FIRSTNAME);
            u.setLastName(LASTNAME);
            u.setEmail(EMAIL);
            u.setPassword(PASSWORD);
            u.setPhoneNumber(PHONENUMBER);
            u.setRole(ROLE);
            em.persist(u);

    }

    @Rollback
    @Test
    public void testCreate() {
            // Trying to run this empty test
    }
}

При запуске я получаю следующее:

INFO: Began transaction (1) for test context [DefaultTestContext@16fb356 testClass = UserHibernateDaoTest, testInstance = ar.edu.itba.paw.persistence.UserHibernateDaoTest@6bc248ed, testMethod = testCreate@UserHibernateDaoTest, testException = [null], mergedContextConfiguration = [MergedContextConfiguration@224b4d61 testClass = UserHibernateDaoTest, locations = '{}', classes = '{class ar.edu.itba.paw.persistence.TestConfig}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{}', contextLoader = 'org.springframework.test.context.support.DelegatingSmartContextLoader', parent = [null]]]; transaction manager [org.springframework.orm.jpa.JpaTransactionManager@23a9ba52]; rollback [true]
Jan 15, 2020 1:17:10 PM org.springframework.test.context.transaction.TransactionContext endTransaction
INFO: Rolled back transaction for test context [DefaultTestContext@16fb356 testClass = UserHibernateDaoTest, testInstance = ar.edu.itba.paw.persistence.UserHibernateDaoTest@6bc248ed, testMethod = testCreate@UserHibernateDaoTest, testException = java.lang.IllegalArgumentException: Unknown entity: ar.edu.itba.paw.models.User, mergedContextConfiguration = [MergedContextConfiguration@224b4d61 testClass = UserHibernateDaoTest, locations = '{}', classes = '{class ar.edu.itba.paw.persistence.TestConfig}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{}', contextLoader = 'org.springframework.test.context.support.DelegatingSmartContextLoader', parent = [null]]].

Если изменить Откат ( ) для отката (false) я получаю:

 RollbackException: Transaction marked as rollbackOnly

Любые идеи, как это исправить?

В случае, если вы обнаружите, что это необходимо, я опубликовал свой TestConfig в этот вопрос.

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Аннотируйте свой класс TestConfig с помощью @EntityScan("ar.edu.itba.paw.models"). Также убедитесь, что ваш класс сущности помечен @Entity

0 голосов
/ 17 января 2020

Spring не находит вас Класс пользователя как сущность. Так что он не знает о том, что Пользователь является сущностью. Вам необходимо добавить пакет сущностей для сканирования компонентов в TestConfig классе.

@ComponentScan({"src.main.java.ar.edu.itba.paw.persistence", "ar.edu.itba.paw.models" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...