2010-10-01 3 views
1

У меня была следующая версия теста в JUnit 3, и я попытался преобразовать ее в JUnit 4, без успеха. Идея состоит в том, чтобы иметь базовый тестовый пример, который выполняет фактический тест интерфейса, скажем, интерфейс Service. Я хочу проверить класс ServiceImpl, используя базовый тестовый пример.Junit 3 to JUnit 4 conversion

 
public abstract class ServiceBaseTest extends TestCase { 

    protected Service service; 
    protected abstract Service getService(); 

    @Override 
    public void setUp() { 
     service = getService(); 
    } 

    public void testMethod(){ 
     //test code 
    } 
    ... 
} 

ServiceImplTest класс как:

 
public class ServiceImplTest extends ServiceBaseTest { 
    @Override 
    public void setUp() { 
     service = new ServiceImpl(); 
    } 
} 

Я знаю, что я могу удалить расширение TestCase и использовать @BeforeClass для метода setup. Но разница в том, что @BeforeClass требует, чтобы метод setup был static. Это сложно для меня, так как я не могу ставить getService(), потому что это противоречило бы ключевому слову abstract.

Question: Является ли чистый способ реализации альтернативы, используя JUnit 4?

ответ

1

Не можете ли вы использовать аннотацию @Before?

+0

@ Перед выполнением перед каждым испытанием @Test. Я просто хочу настроить Сервис один раз. – walters

+1

в JUnit3, setUp() также вызывается перед каждым тестом. Если вы хотите, чтобы getService() вызывается только один раз, вы можете сохранить результат вызова в статическом поле – NamshubWriter

1
protected static Service service = null; 

@Override 
public void setUp() { 
    if(service == null)//Check null 
     service = new ServiceImpl(); 
}