2015-05-19 98 views
0

添加一些一次性启动码如何robolectric的Android测试添加一些一次性启动代码。如何robolectric测试

我们可以像使用@Before注释一样添加一些方法,在该类的测试运行之前运行,但可以添加一些在执行任何测试代码之前执行的代码,在Android robolectric中。

+1

你能举个例子,为什么@before是不够的? –

+0

你需要它在班级中的所有考试之前运行一次还是需要它在所有班级的所有考试之前运行一次? –

+0

@AlexFlorescu一次为所有的测试和所有类。 –

回答

3

使用JUnit的@BeforeClass注释。

class Test { 
    @BeforeClass 
    public static void doOnce() 
     //Do once before any test case is run. 
    } 
} 
0

解决方案#1

您可以使用继承或组成。例如。你可以创建TestBase类:

class TestBase { 
    @Before 
    protected setUp() { 
     // code for all tests 
    } 
} 

,然后你的测试可以从中获得:

@RunWith(RobolectricTestRunner.class) 
class SpecificTest extends TestBase { 
    ... 
} 

解决方案#2

你也可以创建一个包含一个可重复的代码中的一些实用工具类方法,并在您的测试中每调用setUp()方法调用此方法。那么,你将不需要继承。例如:

class Util { 
    private Util() {} 
    public static setUp() { 
     // code for all tests 
    } 
} 

,你的测试可能看起来像:

@RunWith(RobolectricTestRunner.class) 
class SpecificTest { 
    @Before 
    public setUp() { 
     Util.setUp(); 
    } 
} 
+0

但是每当扩展TestBase的类都被测试时,那个setUp方法会运行吗?我想要的是某个事件或方法像@before一样执行,但在任何类的任何测试执行之前执行一次。 –

+1

@AamirAbro在'TestApplication'中尝试'beforeTest()'实现'TestLifeCycleApplication'。见http://robolectric.org/custom-test-runner/ – hidro