Reputation: 2344
I want to first save VO and get its Id (Primary Key) and then perform get and delete operation based on Id.
My code
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TransactionDAOImplTest {
TransactionDAOImpl daoImpl = new TransactionDAOImpl();
public long Id;
String transactionId = "1468597863";
String uniqueKey = "124587878";
// @Ignore
@Test
public void test1_savetransaction() {
transactionVO transactionVO = new TransactionVO();
transactionVO.setTransactionId(transactionId);
transactionVO.setUniqueKey(uniqueKey);
transactionVO.setCreationDate(Calendar.getInstance());
transactionVO vo = daoImpl.saveTransaction(transactionVO);
Id = vo.getId(); // Here Id is setting to some value like 775
assertEquals(transactionId, vo.getTransactionId());
}
// @Ignore
@Test
public void test2_findTransactionEvent() {
transactionVO vo = daoImpl.findTransaction(Id); // Here Id is reseting to 0 it should be 775, so not able to get
assertEquals(transactionId, vo.getTransactionId());
}
// @Ignore
@Test
public void test3_deletetransaction() {
int deletedCount = daoImpl.deleteTransactionById(Id); // Here also Id reseting to 0 it should be 775, so not able to delete
assertTrue(deletedCount > 0);
}
But when I set Id and use it in other methods it reset to 0.
How to use variable(e.g Id) in all JUnit Test methods?
Upvotes: 2
Views: 83
Reputation: 211
Make id as static so there will be only one copy of it per jvm.
static public long Id;
Upvotes: 2
Reputation: 58772
Add setting Id to BeforeClass so it will be available in all methods (need to be static)
public static long Id;
@BeforeClass public static void onlyOnce() {
transactionVO transactionVO = new TransactionVO();
transactionVO.setTransactionId(transactionId);
transactionVO.setUniqueKey(uniqueKey);
transactionVO.setCreationDate(Calendar.getInstance());
transactionVO vo = daoImpl.saveTransaction(transactionVO);
Id = vo.getId(); // Here Id is setting to some value like 775
}
Upvotes: 3