2013-02-11 2 views
2

Я думал, что tearDown() должен запускаться после каждого теста, но то, что я вижу из журналов, заключается в том, что он запускается сразу после метода setUp(). Можете ли вы, ребята, пояснить?Должен ли tearDown() запускаться после каждого теста?

public class LaunchManagerActivityTest extends ActivityInstrumentationTestCase2<LaunchManagerActivity> { 
    private Solo solo; 

    public LaunchManagerActivityTest() { 
     super(LaunchManagerActivity.class); 

    } 

    protected void setUp() throws Exception { 
     super.setUp(); 
     Log.e("Dev", "setup"); 

     solo = new Solo(getInstrumentation(), getActivity()); 

    } 

    protected void tearDown() throws Exception { 
     super.tearDown(); 
     Log.e("Dev", "tearDown "); 

    } 

Выход:

02-11 11:33:33.095: E/Dev(26779): setup 
02-11 11:33:34.395: E/Dev(26779): tearDown 
+0

У вас нет тестового теста. Поэтому, я думаю, это ожидается. –

+0

Да, он вызывается после каждого метода testXXX. Вероятно, ваш тест просто ничего не выводит. –

+1

@RKajaMohideen Я думаю, что у него есть хотя бы один тестовый сценарий, скрытый в суперклассе. В противном случае не будут вызываться 'setUp' или' tearDown'. –

ответ

7

У Вас нет тестов в классе вы размещены так, он просто побежал установки, а затем демонтажа. Это ожидаемое поведение, если вы имели какие-либо испытания он будет работать:

constructor() 
setUp(); 
testXXX(); 
tearDown(); 

, если у вас два теста было бы запустить

constructor() 
setUp(); 
testXXX(); 
tearDown(); 

setUp(); 
testXXX2(); 
tearDown(); 

Помните тест в JUnit 3 (который андроид польз) должен начните с теста слова и будьте в том же классе.

, чтобы проверить то, что я сказал, добавьте следующие методы в:

public void testXXX(){ 
    Log.d("Dev", "testXXX "); 
} 

public void testXXX2(){ 
    Log.d("Dev", "testXXX2 "); 
} 
0

Я полагаю, что это JUnit3. TearDown запускается после каждого теста. Есть ли у вас тест в тестовом файле? JUnit будет запускать только тесты, определенные в текущем классе.

Смежные вопросы