所有MyService方法都是事務性的。下面的JUnit測試,獲取項目的數量,節省了一個新的項目,並獲得項目的數量,以確保數已經增加,由1在非調試模式下,junit中的@un事件未按預期工作
public class MyTest extends ServiceTest{
1. int countBefore = myService.getCount(); //return n
2. myService.add(item); //item is really added to DB
3. int countAfter = myService.getCount(); //return n (sometimes n+1)
}
@Transactional(propagation=Propagation.REQUIRES_NEW, isolation=Isolation.READ_COMMITTED)
getCount(){…}
@Transactional(propagation=Propagation.REQUIRES_NEW, isolation=Isolation.SERIALIZABLE)
add(){…}
@Ignore
@ContextConfiguration(locations = { "file:src/main/resources/xxx-context.xml",
"file:src/main/resources/xxx-data.xml",
"file:src/main/resources/xxx-services.xml" })
@TransactionConfiguration(transactionManager = "txManager", defaultRollback = false)
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
TransactionalTestExecutionListener.class,
TestListener.class})
public class ServiceTest extends AbstractUT{
@Ignore
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({TestListener.class})
public class AbstractUT{
當調試(3.)返回n + 1這是我想要的。但是,在沒有調試的情況下運行測試時,我得到n
即使有時運行測試我得到n + 1和下次我得到n和比較兩個執行之間的標準輸出時,它看起來完全一樣。我已經啓用log4j.logger.org.springframework.transaction = TRACE,我可以看到:
Initializing transaction synchronization
Getting transaction for MyService.getCount
...
Completing transaction for MyService.getCount
Clearing transaction synchronization
...
Initializing transaction synchronization
Getting transaction for MyService.add
...
Completing transaction for MyService.add
Clearing transaction synchronization
...
Initializing transaction synchronization
Getting transaction for MyService.getCount
...
Completing transaction for MyService.getCount
Clearing transaction synchronization
所以交易正在執行一個接一個,但怎麼可能(3)看不到保存的項目?
交易同治是建立在我的測試類按:https://stackoverflow.com/a/28657650/353985
我如何才能找到什麼錯誤? 謝謝!
您是否使用''?無論如何看到我的回答[此鏈接](http://stackoverflow.com/a/25910635/3364187)。 –
Xstian
2015-02-23 08:27:13
絕對是的。 – redochka 2015-02-23 08:32:05
你可以添加配置和你的TestClass嗎? – Xstian 2015-02-23 08:42:26