2012-12-20 5 views
6

yılında JUnit Kur Yöntemine benzer bir şey var mı. DAOProcess içinde, DAO yöntemleri a, b ve c'yi çağıran çeşitli yöntemlerim var.Ben bu DAO arayüzünün bir taklidini oluşturmak ve ben DAOProcess denilen bir şeye beslemek senaryo</p> <pre><code>interface DAO { String a(); String b(); String c(); } </code></pre> <p>aşağıdakilere sahip Mockito

Şimdi her seferinde DAOProcess'ta bir yöntemi test etmem gerekiyorsa, ben when(mockDAO.a()).thenReturn("test") yazacağım.

Yine de tüm bu test örneklerinde ortak olan bu when(mockDAO.a()).thenReturn("test")'u taşıyabilir miyim?

cevap

9

sizin test durumları tek bir sınıfta size @Before ile açıklamalı bir yöntem, örneğin yararlanabilecek ediyorsanız:

... 
private DAO mockDAO; 

@Before 
public void setUp() { 
    mockDAO = mock(DAO.class); 
    when(mockDAO.a()).thenReturn("test"); 
    ...etc... 
}  
... 

Veya, birçok sınama sınıfı üzerinde davranışa ihtiyacınız varsa, bir Mock örneğindeki davranışı ayarlamak için bir yardımcı program sınıfı yazabilirsiniz, örneğin:

public class MockDAOPrototype { 
    public DAO getMockWithDefaultBehaviour() { 
     final DAO mockDAO = mock(DAO.class); 
     when(mockDAO.a()).thenReturn("test"); 
     ...etc... 

     return mockDAO; 
    } 
} 

setUp yönteminize MockDAOPrototype.getMockWithDefaultBehaviour() numaralı telefonu arayın.

2

abstract numaralı bir AbstractTestCase sınıfı oluşturabilir ve bu alamaya ihtiyacınız olan tüm sınama durumlarında genişletebilirsiniz. Bu soyut test durumunda, aşağıdaki ifadelere sahip olacaksınız. somut test durumu sınıflarında

@Ignore // just in case your runner thinks this is a JUnit test. 
public abstract class AbstractTestCase 
{ 
     @Mock 
     private DAO mockDAO; 

     @Before 
     private void setupMocks() 
     { 
      when(mockDAO.a()).thenReturn("test") 
      .... 
     } 
} 

, olur

public class MyConcreteTestCase extends AbstractTestCase 
{ 
     @InjectMocks 
     @Autowired 
     private DAOProcess daoProcess; 

     .... 
} 
+0

Buraya Otomatik kablolama notunu kullanmam, çünkü bahar malzemeleriyle kafa karıştırıcı olabilir. DAOProcess, bir Spring bağlamında oluşturulmuş olsa bile, bu ışınların hala bahar tarafından yönetilirken, ortak çalışanların referanslarını sahte tarafından değiştirmenin akıllıca bir fikir olacağından emin değilim! – Brice

İlgili konular