私はスクリーンショットを生成したクラスがあります:で作成SpringBootでawt。*をテストするには?
@Component
public class ImagesHandlerImpl implements ImagesHandler {
....
public boolean doScreen() throws IOException, AWTException {
final Rectangle rectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
...
}
}
マイアプリを、私はそれをテストする必要があります。しかし、私はjava.awt.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));
}
}
私はHeadlessExceptionを防ぐために試してみてください。
@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を使用しています。
しかし、それは役に立たなかった。
org.robinhood.image.ImagesHandlerImpl.doScreen(ImagesHandlerImpl.java:42)で sun.awt.HeadlessToolkit.getScreenSize(HeadlessToolkit.java:284)でava.awt.HeadlessException :私は、ログ取得します でorg.robinhood.image.ImagesHandlerImplTest.whenDoScreenThenCreatePrintScreen(ImagesHandlerImplTest.java:51) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) で でsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)でsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at j (FrameworkMethod.java:50) at org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model。 org.junit.internal.runners.statements.InvokeMethod.evaluate(は、invokeMethodでReflectiveCallable.run(ReflectiveCallable.java:12) でorg.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 。 Javaの: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で) で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。Javaの:70) org.junit.runners.ParentRunner.run(ParentRunner.java:363)で org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)org.junitで で。 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.prepareStreamsAndStart(JUnitStarter.java:242) com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70で)
私を助けてください。この問題を解決するには? ありがとうございました!
それは役に立たなかった。私は同じ結果を得る。 'SpringApplicationBuilder builder =新しいSpringApplicationBuilder(Application.class); builder.headless(true).run(args); ' – Pavel
私の更新された回答を確認してください。 –