나는 스크린 샷을 생성하는 클래스가 있습니다 spring boot
로 만든SpringBoot에서 awt. *를 테스트하는 방법은 무엇입니까?
@Component
public class ImagesHandlerImpl implements ImagesHandler {
....
public boolean doScreen() throws IOException, AWTException {
final Rectangle rectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
...
}
}
내 응용 프로그램을, 나는 그것을 테스트해야합니다.
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplicationBuilder builder = new SpringApplicationBuilder(App.class);
builder.headless(false).run(args);
}
}
내가 봄 부팅 버전 1.5.6.RELEASE를 사용 : 나는 모두 HeadlessException 방지하려고
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ImagesHandlerImpl.class)
@ContextConfiguration(classes = App.class)
public class ImagesHandlerImplTest {
...
@Test
public void whenDoScreenThenFilenameLikeTemplate() throws IOException, AWTException {
imagesHandler.doScreen();
final String name = dir.listFiles()[0].getName();
assertThat("SCREEN_0", is(name));
}
}
:하지만 java.awt.HeadlessException
내 테스트를 얻을.
하지만 도움이되지 않았습니다.
org.robinhood.image.ImagesHandlerImpl.doScreen (ImagesHandlerImpl.java:42)에서 sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284)에서 ava.awt.HeadlessException : 나는 로그 수 에서 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)에서 sun.reflect.NativeMethodAccessorImpl.invoke0 (기본 방법) 에서 org.robinhood.image.ImagesHandlerImplTest.whenDoScreenThenCreatePrintScreen (ImagesHandlerImplTest.java:51) 에서 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at j org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:50) at org.junit.runners.model.avan.lang.reflect.Method.invoke ReflectiveCallable.run org.junit.internal.runners.statements.InvokeMethod.evaluate에서 org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:47) 에서 (ReflectiveCallable.java:12) (InvokeMethod. 자바 17) org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate (RunBeforeTestMethodCallbacks.java:75) 에서 org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate (RunAfterTestMethodCallbacks에서 된 .java : 86) org.springframework.test.context.junit4.statements.SpringRepeat.evaluate (SpringRepeat.java:84 AT)에서 org.junit.runners.ParentRunner.runLeaf (ParentRunner.java:325)에서 org.junit.runners에서 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild (SpringJUnit4ClassRunner.java:94)에서 (SpringJUnit4ClassRunner.java:252) .ParentRunner $ 3.run (ParentRunner.java:290) at org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren (ParentRunner.java:288) at org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:58) at org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:268) at org.junit.internal.runners.statements.RunBefores.evaluate (RunBefores.java:26) at org.springframework.test.context org.springframework.test.context.junit4에서 .junit4.statements.RunBeforeTestClassCallbacks.evaluate org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:27)에서 (RunBeforeTestClassCallbacks.java:61) .statements.RunAfterTestClassCallbacks.evaluate (RunAfterTestClassCallbacks.자바 : org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run (SpringJUnit4ClassRunner.java:191) org.junit에서 에서 org.junit.runners.ParentRunner.run (ParentRunner.java:363) 70) . com.intellij.rt.execution.junit.IdeaTestRunner $ Repeater.startRunnerWithArgs에서 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs (JUnit4IdeaTestRunner.java:68) 에서 runner.JUnitCore.run (JUnitCore.java:137) (IdeaTestRunner 된 .java 47) com.intellij.rt.execution.junit.JUnitStarter.main에서 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart (JUnitStarter.java:242)에서 (JUnitStarter.java:70)
도와주세요. 이 문제를 해결하는 방법? 감사합니다!
도움이되지 않았습니다. 나는 같은 결과를 얻는다. 'SpringApplicationBuilder 빌더 = 새로운 SpringApplicationBuilder (Application.class); builder.headless (true) .run (args); ' – Pavel
업데이트 된 답변을 확인하십시오. –