【发布时间】:2024-10-06 13:50:01
【问题描述】:
请注意,我已在本网站和其他地方广泛研究过这个问题,但建议的解决方案对我不起作用。
我可以毫无问题地运行 Spring 应用程序本身(bootRun),因此我认为这只是与 jUnit 相关的问题。 当我尝试在 SearchControllerUnitTest 类上运行 Gradle 测试或 JUnit 测试时,我最终得到 NullPointerException。
谁能指出我的配置不正确的地方?
谢谢!
SearchControllerUnitTest.java
@Category(UnitTest.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppConfig.class)
public class SearchControllerUnitTest extends UnitTest {
private MockMvc mockMvc;
@Override
@Before
public void setUp() {
super.setUp();
mockMvc = MockMvcBuilders.standaloneSetup(new SearchController()).build();
}
@Test
public void getProductTest() throws Exception {
. . .
}
SearchController.java
@RestController
public class SearchController {
public static final Logger log = LoggerFactory.getLogger(SearchController.class);
@Autowired
Product product; // <<< autowiring not working in jUnit only
@Autowired
ProductService productService; // <<< autowiring not working in jUnit only
@RequestMapping(value = "/search", method = RequestMethod.GET, produces = "application/json")
public ResponseEntity<Product> getProduct(@RequestParam(value = "name", required = true) String name) {
if (productService == null) {
log.info("productService is null!!");
}
. . .
product = productService.getProduct(name); // <<<< NPE here
}
ProductService.java
public interface ProductService {
. . .
public Product getProduct(String productName);
. . .
}
ProductServiceImpl.java
@Service
public class ProductServiceImpl implements ProductService {
public Product getProduct(String productName){
. . .
}
}
例外:
Caused by: java.lang.NullPointerException
at com.somepckagename.controller.SearchController.getProduct(SearchController.java:36)
【问题讨论】:
-
您是否为您的测试上下文定义了接线?