2012-02-18 2 views

ответ

2

Очень расплывчатый вопрос. В частности, вы не указали, как вы используете тесты JUnit. Также вы упомянули «файл», и файл может содержать несколько тестов JUnit. Вы хотите запустить внешнюю команду перед каждым из этих тестов или до того, как какая-либо из них будет выполнена?

Но больше на тему:

Если вы используете JUnit 4 или больше, то вы можете пометить метод с @Before аннотацию и метод будет выполняться перед каждым из ваших помеченных @Test методов. В качестве альтернативы, пометка статического метода void с помощью @BeforeClass приведет к его запуску до запуска любого из методов @Test в классе.

public class MyTestClass { 

    @BeforeClass 
    public static void calledBeforeAnyTestIsRun() { 
     // Do something 
    } 

    @Before 
    public void calledBeforeEachTest() { 
     // Do something 
    } 

    @Test 
    public void testAccountCRUD() throws Exception { 
    } 
} 

Если вы используете версию JUnit ранее, чем 4, то вы можете переопределить setUp() и setUpBeforeClass() методы в качестве замены для @Before и @BeforeClass.

public class MyTestClass extends TestCase { 

    public static void setUpBeforeClass() { 
     // Do something 
    } 

    public void setUp() { 
     // Do something 
    } 

    public void testAccountCRUD() throws Exception { 
    } 
} 
+0

Спасибо. Ваше сообщение, по сути, отвечает на мой вопрос, хотя я надеялся на то, что не полагается на сам язык (Run configuration и т. Д.). – Petr

+0

@Petr - без проблем. JUnit - очень плотная, хорошо определенная библиотека (одна из тех, что нравится большинству людей). Если вы хотите настроить внешнюю конфигурацию, вам нужно указать более подробную информацию - например, вы запускаете свои тесты с Maven, Ant, в среде IDE и т. Д. И т. Д. – Perception

+0

@Petr - nvm Я вижу, что вы редактировали свой вопрос. Я не верю, что вы можете настроить внешнюю команду для запуска как часть вызова JUnit. Но другие методы, которые я изложил, должны работать нормально. – Perception

1

Предполагая, что вы используете JUnit 4.0, вы можете сделать следующее:

@Test 
public void shouldDoStuff(){ 
    Process p = Runtime.getRuntime().exec("application agrument"); 
    // Run the rest of the unit test... 
} 

Если вы хотите запустить внешнюю команду для каждого модульного тестирования, то вы должны сделать это в методе @Before установки ,

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