2011-07-08 13 views
6

Nedenini bilmiyorum, ama her zaman böyle benim JMock testleri yazdım:JMock assertIsTearDown bölgesinde bulundunuz mu?

@Test 
public void testMyThing() throws Exception { 
    mockery.checking(new Expectations() {{ 
     oneOf(mockObj).foo(); 
    }}); 
    testObj.bar(); // calls mockObj.foo() 
    mockery.assertIsSatisfied(); 
} 

Fakat birçok testler varken, gözyaşı aşağı için assertIsSatisfied taşımak daha iyidir?

@After 
public void tearDown() throws Exception { 
    mockery.assertIsSatisfied(); 
} 

cevap

5

Bunu yapmanın önerilen yolu JMock runner'ı kullanmaktır. Sınıfı, test yaşam döngüsünde doğru yerde onaylama çağrısı olarak anılacaktır. Başarısızlık doğru bir şekilde bildirilmediğinden ve diğer temizliği bertaraf edebileceğinden yırtılma doğru yer değildir.

Ayrıca, depoda yeni @Rule altyapısıyla çalışan bir alay kuralı var.

0

Evet, bunu gözyaşı içinde yapma eğilimindeyim. Deney testlerinin odağını gerçekte test ettikleri şey üzerine odaklayarak, kazan plakasını @After'a kaldırarak - testlerin olabildiğince anlamlı ve okunabilir olması benim için kritik öneme sahiptir.

Aslında, bazen daha ileri götürün ve benim için Mockery işleyen bir JMockSupport temel sınıfını kullanmak (yanı sıra mock(...) kolaylık uygulamasını sağlamak). Bu sadece bir kolaylıktır ve elbette JUnit 3'teki gibi bir gereksinim yoktur.

+0

Lütfen koşucuyu veya yeni kural uygulamasını kullanmayı düşünün. @After'ı kullanırsanız, istisna, test yaşam döngüsünde doğru zamanda atılmaz. –

İlgili konular