Я столкнулся с проблемой, которая заставила меня по-настоящему застопориться. Я уверен, что это что-то вроде junit, с которым я не очень разбираюсь.Странное поведение при тестировании многопоточности в junit
Давайте Tak очень простой класс:
package incubate.thread;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Sleeper implements Runnable{
@Override
public void run(){
try {
Thread.sleep(5000l);
System.out.println("done snoozing");
} catch (InterruptedException ex) {
Logger.getLogger(Sleeper.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Написать очень простой тест для резьбы
package incubate.thread;
import org.junit.Test;
public class SleeperTest {
@Test
public void testSnooze() throws Exception {
new Thread(new Sleeper()).start();
}
public static void main(String...args){
new Thread(new Sleeper()).start();
}
}
Вы заметите, я включил в «основной» метод внутри тестового класса. Когда вы вызываете junit для выполнения «testSnooze», тест сразу же выходит без запуска потока.
Если, однако, вы вызываете основной метод, поток работает просто отлично; он откладывает, а затем печатает быстрое сообщение в конце
Как насчет junit вызывает такое поведение?
Когда вы вводили этот вопрос или какой-либо из ваших восьми предыдущих вопросов, там был большой оранжевый ** «Как отформатировать **» справа. Стоит прочитать. И в то время, как и при наборе любого из ваших восьми ответов *, была полная панель инструментов форматирования над текстовым полем. И ** [?] ** кнопка с большой помощью. И область предварительного просмотра внизу, чтобы проверить ваши результаты. Пожалуйста, используйте их. –
Спасибо. Это отлично выглядит сейчас – mainas
Спасибо Томасу, он сделал эту работу. Я просто пожаловался. :-) –