【问题标题】:Running tests using maven displays classpath problems使用 maven 运行测试显示类路径问题
【发布时间】:2011-09-14 16:00:49
【问题描述】:

我正在尝试使用 Maven 在我的 Spring Web 应用程序上运行一些单元测试。该应用程序无需测试即可安装并运行良好。

我在万无一失的测试报告中收到此错误:

java.lang.NoClassDefFoundError: javax/servlet/ServletException

测试本身看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:C:/myProjects/myWebapp/src/main/webapp/WEB-INF/applicationContext-test.xml"})
@Transactional
public class MyTest {
...

之前我收到了这个error,但是我从测试应用上下文中删除了对安全包的任何引用。并得到了这个最新的错误。

这两个问题都是由于我的类路径设置不正确造成的?测试时似乎不包括 Maven 依赖项?我该如何更改这一点,或者我还缺少什么?

【问题讨论】:

  • 你能发布你的pom吗?听起来您缺少 servlet-api 作为 <provided> 范围的工件。
  • 我假设 javax.servlet.ServletException 包含在您的导入包中?

标签: java spring maven junit


【解决方案1】:

试试这个。

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>test</scope>
</dependency>

你的 servlet 容器会有这个,但你的一些测试必须需要它。您可能需要调整版本。

范围很重要。您不想将此 jar 捆绑到您的战争中,但您希望它可用于您的测试。

【讨论】:

  • 我一直看到 servlet api 被嘲笑而不是包含在测试范围中
  • Kevin,你仍然需要 classpath 上的 API 才能模拟它,这就是它的作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多