2010-10-01 71 views
1

我在JUnit 3中有以下版本的测试,我试着将它转换成JUnit 4,没有成功。这个想法是有一个基本的测试用例,它接口的实际测试,例如Service接口。我想使用基本测试用例来测试ServiceImpl类。Junit 3到JUnit 4的转换

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

我知道我可以删除TestCase推广和使用@BeforeClass为setup方法:

 
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类等。但区别在于@BeforeClass要求方法setupstatic。这对我来说很棘手,因为我不能使getService()为静态,因为它会与abstract关键字冲突。

Question:是否使用JUnit 4实现替代方案的干净方式?

回答

1

不能使用@Before注解吗?

+0

@Before将在每个@Test之前执行。我只想设置一次服务。 JUnit3中的 – walters 2010-10-01 16:20:00

+1

,setUp()也在每次测试之前调用。如果要确保只调用一次getService(),则可以将调用的结果存储在静态字段中 – NamshubWriter 2010-10-24 07:09:34

1
protected static Service service = null; 

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