2016-03-26 16 views
0

Birim testlerimde bazı varlıkları sürdürmek ve veritabanından almalarını test etmek istiyorum. Kaydedilmiyorlardı ve test metodu @Transaction ile de açıklandığı zaman, bunun bir hata olmadan bitmesine rağmen, içinde olan hiçbir şeyin kalıcı olmadığına karar verdim. Bir çoğu çoğa tembel yüklü dernek ile karıştırmasını ve @Transaction sorunu gidermek gibiydi ile yöntemini açıklarken @Transaction açıklamalı yöntem, verileri bir veritabanına kaydetmiyor

Daha önce ben kullanıyorum neden işte bir LazyInitializationException karşılaşmıştı.

Varlıkların neden kurtarılmamasının nedeni ne olabilir? İşlemin başarısız olmadığından geri alınmasının bir nedeni yoktur. İlgili sınıfların

Kodu:

@Test 
@Transactional 
public void plainPersistence() throws NullParameterException { 
    User user = userHelper.createUser("User1", "password", null, null); 

    Assert.assertNotNull(userDAO.findByUsername("User1")); 
} 

userhelper:

@Service 
public class UserHelper { 
    @Autowired 
    private UserDAO userDAO; 


    public User createUser(...) throws NullParameterException { 
     User newUser = new User(username, ...); 

     userDAO.save(newUser); 

     return newUser; 
    } 

UserDAO en save() yöntem sonradan çağırır save()UserRepository tarih: Eğer olasıdır yana

@Repository 
public interface UserRepository extends CrudRepository<User, Long> { 
    public User findByUsername(String username); 
} 

cevap

0

Spring test kullanarak, varsayılan davranışın değişiklikleri geri almak olacak şekilde yapılandırıldığını unutmayın. aksi takdirde bu moral @Rollback(value = false)

+0

teşekkür ile sınıf açıklama Bahar < 4,2

@TransactionConfiguration(defaultRollback = false) 

kullanıyorsanız, bu değiştirmek için, ile test sınıfları açıklama olmalıdır. Şimdi bir istisna alıyorum olsa da 'org.springframework.transaction.TransactionSystemException: JPA işlemi yapılamadı; iç içe istisna javax.persistence.RollbackException: rollbackOnly' olarak işaretlenmiş İşlem, ama bu ben –

+0

yeps varsayalım bir ilerleme, bu mantık kendisi üzerinde devam eden gerçek bir istisna nedeniyle. Bu anlamaya gerek –

İlgili konular