मैं कुछ लेखापरीक्षित इकाइयों के आसपास कुछ परीक्षण बनाने की कोशिश कर रहा हूं। मेरी समस्या यह है कि लेनदेन प्रतिबद्धता पर केवल लेखा परीक्षा में प्रवेश करता है।हाइबरनेट के साथ एकीकरण परीक्षण
मुझे कुछ परीक्षण वस्तुओं को बनाने/संपादित करने, लेनदेन करने और फिर संशोधन की जांच करने की आवश्यकता है।
एनवर्स के साथ एकीकरण परीक्षण के लिए सबसे अच्छा तरीका क्या है?
अद्यतन: यहाँ मैं क्या हासिल करना चाहते का एक बहुत बुरा, गैर नियतात्मक परीक्षण क्लास है। मैं परीक्षण तरीकों
पहले एकल लेन-देन में एक खाता और account_transaction बनाने के आदेश पर निर्भर रहे बिना यह करने के लिए पसंद करेंगे। दोनों लेखा परीक्षित प्रविष्टियों संशोधन 1.
दूसरा एक नया लेनदेन में account_transaction अद्यतन के लिए कर रहे हैं। लेखा परीक्षा प्रवेश संशोधन पर 2.
तीसरा है, संशोधन 1 पर लेखा परीक्षित खाते लोड और इसके साथ कुछ करना।
@Transactional
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/testApplicationContext.xml"})
public class TestAuditing {
@Autowired
private AccountDao accountDao;
@PersistenceContext
private EntityManager entityManager;
@Test
@Rollback(false)
public void first() {
Account account = account("Test Account", "xxxxxxxx", "xxxxxx");
AccountTransaction transaction = transaction(new Date(), Deposit, 100, "Deposit");
account.setTransactions(newArrayList(transaction));
accountDao.create(account);
}
@Test
@Rollback(false)
public void second() {
Account account = accountDao.getById(1L);
AccountTransaction transaction = account.getTransactions().get(0);
transaction.setDescription("Updated Transaction");
accountDao.update(account);
}
@Test
public void third() {
AuditReader reader = AuditReaderFactory.get(entityManager);
List<Number> accountRevisions = reader.getRevisions(Account.class, 1L);
//One revision [1]
List<Number> transactionRevisions = reader.getRevisions(AccountTransaction.class, 1L);
//Two revisions [1, 2]
Account currentAccount = accountDao.getById(1L);
Account revisionAccount = (Account) reader.createQuery().forEntitiesAtRevision(Account.class, 1).getSingleResult();
System.out.println(revisionAccount);
}
जांचें [यह] (http://nurkiewicz.blogspot.com/2011/11/spring-pitfalls-transactional-tests.html) बाहर - लापरवाह आत्म-प्रचार। –
उत्तर टॉमसज़ के लिए धन्यवाद, मुझे अभी भी यकीन नहीं है कि आपकी ब्लॉग पोस्ट से मेरी समस्या का समाधान कैसे करें। मुझे आलसी लोडिंग आदि से झूठी सकारात्मकताओं में वास्तव में कोई समस्या नहीं है, वास्तव में कुछ ऑडिटिंग परीक्षण डेटा सेट करने के लिए कुछ लेन-देन करने के साथ। हो सकता है कि मैंने आपकी पोस्ट में कुछ स्पष्ट याद किया हो? –
ठीक है, मेरे आलेख को 'डीबीआरसेट रूट' पर स्क्रॉल करें - मेरा विचार है कि '@ ट्रांजेक्शनल' जुनीट परीक्षणों का उपयोग करने से बचें और बस अपना कोड प्रतिबद्ध करें और रोलबैक लेनदेन दें। जाहिर है यह परीक्षण दोहराया जा सकता है और नाजुक। लेकिन परिवर्तनों को वापस लाने की बजाय मैं डेटाबेस को डंप करने और प्रत्येक परीक्षण के पहले/बाद में इसे बहाल करने का प्रस्ताव कर रहा हूं। कोड स्कैला में है, लेकिन यह सिर्फ एक सामान्य विचार है। अगर आप यही चाहते हैं तो मुझे बताएं ताकि मैं अलग जवाब में थोड़ा और विस्तार कर सकूं। –