J'essaie de créer des cas de test pour @Transactional
.Échec du test transactionnel
@ContextConfiguration(locations = {"classpath:/META-INF/spring/app-context.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class TransactionalAnnotationTest {
public static final BigDecimal PROD_ID = new BigDecimal(1234);
@PersistenceContext
HibernateEntityManager em;
@Test
public final void testTransactionIsolation() {
String original = em.find(ProductImpl.class, PROD_ID).getDescription();
// original = "Foo"
updateTx(original);
}
@Transactional
public final void updateTx(String original) {
ProductImpl product = em.find(ProductImpl.class, PROD_ID);
product.setDescription("Bar");
whatIsInDB(original);
}
private void whatIsInDB(String original) {
String sameTxDescription = em.find(ProductImpl.class, PROD_ID).getDescription();
assert !sameTxDescription.equals(original);
}
}
Il échoue! Le second em.find
ne doit-il pas renvoyer un produit avec "Bar"?
Je pense que vous vouliez dire 'un produit avec "Bar"' –
Merci u'r droite. –
Ai-je raison que '@ Transactional' est pour les beans gérés par Spring qui sont auto-gérés seulement ??? –