2012-03-21 11 views
3

mavenから単体テストを実行すると奇妙な問題が発生しています。 1つずつ実行すると完璧に動作する単体テストのセットがあります。しかし、私はそれらをmaven(mvn test)から実行するとハングします(永久にブロックされます)。mavenテストがハングアップする

このテストで使用されるクラスAの同じポイント(同じテストクラス)で常にハングします。ログの作成をA.classから削除しようとしましたが、テストは正常に開始されました。これはラインである:私はここから行くためにどんな考えを持っていない

"main" prio=6 tid=0x00446c00 nid=0x1278 runnable [0x00a2f000] 
    java.lang.Thread.State: RUNNABLE 
     at java.lang.ProcessImpl.waitFor(Native Method) 
     at org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:173) 
     at org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:114) 
     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:231) 
     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.runSuitesForkOnce(ForkStarter.java:125) 
     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:109) 
     at org.apache.maven.plugin.surefire.SurefirePlugin.execute(SurefirePlugin.java:619) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 

private static final Logger log = LoggerFactory.getLogger(A.class); 

ここでスレッドダンプです。どんな提案も大歓迎です。

+1

ThreadDumpはmaven-processからのものです。これは、コマンドラインプロセスが生成されることを示しています。 –

+0

Mavenは子プロセスのテストを生成します。この子プロセスのスレッドダンプを取得できますか? – Kkkev

答えて

0

おそらくリソースのデッドロックですか?別のMavenプロセスが生成されているというコメントがあれば、どこに行くのかを示すことができます。あなたはどこかに(またはすべての方法で)あなたのテストに同期を入れて、それがなくなるかどうかを調べることができます。そうであれば、デッドロックになる可能性があります。

関連する問題