मेरे पास जुनीट के साथ कुछ परीक्षण सूट करने में जीवन चक्र समस्या है।जुनीट लाइफ-चक्र
आदेश काम जेपीए 2.0 इकाई लिखने के लिए में एक जावा डेवलपर रूप परीक्षण मैं चाहता हूँ:
- सभी परीक्षणों सुइट्स से पहले एक बार एक EntityManagerFactory उदाहरण प्रमाणित करें। मैं @BeforeClass एनोटेशन का उपयोग कर
- एक EntityManager उदाहरण इन्स्तांत और प्रत्येक परीक्षण मामले से पहले एक नया लेन-देन शुरू करने और पहले AOP की तरह शुरू कर दिया लेनदेन रोलबैक से वस्तु को प्राप्त/के बाद या सलाह के आसपास
- बनाने में सक्षम होना किसी भी स्थापना की/किसी व्युत्पन्न परीक्षण सूट में पहले/बाद में ऑपरेशन को फाड़ें
मैं जुनीट परीक्षण बहुत लिख रहा हूं। लेकिन इस तरह के मामले में मुझे सूची से दूसरी और तीसरी वस्तुओं के साथ समस्या है।
कृपया निम्नलिखित टेस्ट स्वीट उदाहरण के एक बार देख ले:
एक सार टेस्ट सूट:
public abstract class AbstractPersistenceTest {
protected static EntityManagerFactory emf;
protected EntityManager em;
@BeforeClass
public static void setUpClass() {
emf = Persistence.createEntityManagerFactory("test");
}
@Before
public void setUp() {
em = emf.createEntityManager();
em.getTransaction().begin();
}
@After
public void tearDown() {
em.getTransaction().rollback();
em.close();
}
@AfterClass
public static void tearDownClass() {
emf.close();
}
}
एक व्युत्पन्न टेस्ट स्वीट:
public class EmployeeJpqlTest extends AbstractPersistenceTest {
private Employee john;
private Employee jack;
@Before
public void setUp() {
john = new Employee("John Doe", 1000);
jack = new Employee("Jack Line", 1010);
em.persist(john);
em.persist(jack);
}
@Test
public void itShouldRetrieveAllEmplloyees() {
TypedQuery<Employee> query = em.createQuery("SELECT e FROM Employee e",
Employee.class);
List<Employee> employees = query.getResultList();
assertArrayEquals(new Employee[] { john, jack }, employees.toArray());
}
@Test
public void itShoulRetrieveAllEmployeeNames() {
TypedQuery<String> query = em.createQuery(
"SELECT e.name FROM Employee e", String.class);
List<String> names = query.getResultList();
assertArrayEquals(new String[] { john.getName(), jack.getName() },
names.toArray());
}
}
क्योंकि अनिर्दिष्ट की
जुनीट लाइफ-साइकल एनोटेशन का ऑर्डर NullPointerException वें स्थान पर लेता है व्युत्पन्न वर्ग में e setUp() विधि। यह मेरे लिए स्पष्ट है।
क्या किसी भी व्युत्पन्न परीक्षण सूट कक्षा के प्रत्येक सेटअप()/tearDown() विधियों में प्रारंभ/रोलबैकिंग लेनदेन कोड इंजेक्शन के बिना लक्ष्य प्राप्त करना संभव है? या, हो सकता है, क्या कोई वैकल्पिक जुनीट माध्य या परीक्षण ढांचा है जो मेरी आवश्यकताओं को व्यक्त करने का एक आसान तरीका प्रदान कर सकता है?
अग्रिम धन्यवाद।
हां, यह एक अच्छा विचार है। चूंकि Google गिइस एक दुबला आईओसी है, इसका उपयोग कोड के प्रभाव के बिना किया जा सकता है। –