我有多模块maven项目.我使用的技术是
Spring和Struts.我创建了测试用例并将其运行为:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContextSimpleTest.xml" })
public class CurrencySpeakerTest
一切都很好……直到我在源代码中做了一些更改…我无法看到它们,直到我在父项目上运行mvn install.怎么了?我试着调查调试配置,但是我找不到它在编译源而不是.java文件上看的地方…我认为这是junit运行.class文件而不是真实文件的原因.任何人对此有任何想法?
我有3个模块应用程序……它们是使用父模块构建的.父模块也是eclipse中导入的项目.我在测试文件夹中的三个模块之一中进行更改.我点击刷新,我手动清理/构建eclipse项目(如果我启用自动构建它不会改变任何东西).我使用eclipse对话框将测试作为JUnit运行. Eclipse似乎没有看到编辑的测试文件(.java)中的更改.
也许这与包含其他模块的一个主要项目有关?
奇怪的是……如果我编辑不在测试文件夹中的任何其他类并使用tomcat插件运行web应用程序,Eclipse会看到那里的更改吗?
我使用mvn clean和mvn install,但这不是问题.
我使用Eclipse来运行测试,但Eclipse调试器无法看到代码中的更改…例如,如果我在某处添加System.out.println()并将断点放在那里我运行测试并且Eclipse不会停在那里因为它不知怎的看旧代码(我假设.class文件)…或者如果我删除该行,编辑一些字符串…没有…它似乎指向.class …为什么会这样?刷新和清理/构建eclipse项目不起作用.
最佳答案 当我从我编写测试的模块中删除目标时,我在下面得到了例外.这让我的理论成真,eclipse正在研究编译代码而无法看到源代码……为什么会这样?
未找到类pl.erif.utils.CurrencySpeakerTest
java.lang.ClassNotFoundException:pl.erif.utils.CurrencySpeakerTest
在java.net.URLClassLoader $1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
在java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
在sun.misc.Launcher $AppClassLoader.loadClass(Launcher.java:301)
在java.lang.ClassLoader.loadClass(ClassLoader.java:248)
在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)