gpt4 book ai didi

java - 使用 Spring MVC 进行 JUnit 测试 : Initialization error

转载 作者:行者123 更新时间:2023-11-30 06:19:30 25 4
gpt4 key购买 nike

这是我第一次尝试 JUnit 测试和 Spring MVC。我为 bean 制作了一个测试配置类,为 Controller 制作了一个测试类。执行测试时,出现测试失败,提示初始化错误且未找到类定义错误。以下是我的 TestBeanConfig.java 文件

package com.mkyong.controller;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
@Configuration
@ComponentScan(basePackages = "com.mkyong.controller")
public class TestBeanConfig {

@Bean
MultiplicationService multiplicationservice() {
return new MultiplicationService();
}

@Bean
NumberDAO numberDao() {
NumberDAO numberdao =new NumberDAO();
return numberdao;
}
}

和MultiplicationServiceTest.java

package com.mkyong.controller;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes={TestBeanConfig.class})
public class MultiplicationServiceTest {

@Autowired
private MultiplicationService multiplytestobject;

MockMvc mockMvc ;

@Autowired
private WebApplicationContext wac;

public MultiplicationServiceTest() {

}

public MultiplicationService getMultiplytestobject() {
return multiplytestobject;
}

public void setMultiplytestobject(MultiplicationService multiplytestobject) {
this.multiplytestobject = multiplytestobject;
}

@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}

@Test
public void testHandleMultiply() throws Exception {
mockMvc.perform(post("/multiply").param("number1","7").param("number2","7"))
.andExpect((model().attribute("result", "49")))
.andExpect(redirectedUrl("/multiply.jsp"));
}

}

错误跟踪:

Tests in error: 
initializationError(com.mkyong.controller.MultiplicationServiceTest): Failed to instantiate [org.springframework.test.context.web.WebDelegatingSmartContextLoader]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.626s
[INFO] Finished at: Sun Jan 28 15:40:26 IST 2018
[INFO] Final Memory: 16M/180M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.9:test (default-test) on project bmfinal: There are test failures.
[ERROR]

谢谢。

最佳答案

将此添加到 Maven pom.xml 依赖项:

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>

这应该提供项目搜索的类。

如果对您有帮助,请告诉我。

关于java - 使用 Spring MVC 进行 JUnit 测试 : Initialization error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48485304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com