我遵循一个单元测试服务的教程,我试图使用JUnit5而不是JUnit4(这是教程使用的)。当我完全按照JUnit4的教程操作时,测试工作正常,但是我得到了JUnit5的NullPointerExc0019。
存储库:
java prettyprint-override">public interface CourseRepo extends CrudRepository<Course, Long> {}
服务:
@Service
public class CourseService {
private final CourseRepo courseRepo;
public CourseService(CourseRepo courseRepo) {
this.courseRepo = courseRepo;
}
public Course save(Course course) {
Course newCourse = courseRepo.save(course);
return newCourse;
}
}
测试:
package com.elovell.blackboard.service;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import com.elovell.blackboard.domain.Course;
import com.elovell.blackboard.repository.CourseRepo;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
@ExtendWith(MockitoExtension.class)
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
public class CourseServiceTest {
@Mock
public CourseRepo courseRepo;
@InjectMocks
public CourseService courseService;
@BeforeEach
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testSaveCourse() {
Course mockCourse = new Course();
mockCourse.setPk1(1L);
mockCourse.setCourseId("ENGL101");
when(courseRepo.save(any(Course.class))).thenReturn(mockCourse);
// save(null) should still return mockCourse
Course newCourse = courseService.save(null);
assertEquals("ENGL101", newCourse.getCourseId());
}
}
以下是异常的前几行:
java.lang.NullPointerException
at com.elovell.blackboard.service.CourseServiceTest.testSaveCourse(CourseServiceTest.java:44)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
生成文件的测试和依赖项部分:
test {
useJUnitPlatform {
includeEngines 'junit-jupiter'
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation("org.junit.jupiter:junit-jupiter-api:5.5.1")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.1.0")
testCompile 'org.mockito:mockito-junit-jupiter:2.23.4'
}
这看起来像是您试图将集成测试与单元测试混合在一起。
当您使用@SpringBootTest
注释时,那么Junit5的SpringExent
在运行测试之前启动应用程序上下文,并且要在测试中进行模拟,您需要使用@MockBean
注释而不是@Mock
如我所见,您只需要一个单元测试,就可以删除SpringBootTest
注释。
顺便说一下,我认为你得到了NPE,因为你的any(Course.class)
在当(当然回购......
尝试使用isNull()
或any()
(没有具体类)。
问题内容: 尝试通过以下代码连接到 openfire 服务器时: 我得到一个异常说: 这可能是什么原因? 注意 :我已经允许openfire消防服务器通过防火墙。我也尝试过关闭防火墙,但是结果相同。服务器是我自己的机器。我尝试在其上运行程序的同一台计算机。 问题答案: 您可以使用 或者如果您想指定端口 或类似,默认为端口5222
不是只使用,我们使用来包装它并完成依赖并在异步过程中执行测试。 使用需要我们返回一个Promise,我们通过调用或者来解决我们的测试的competition ,这取决于我们测试的结果。
在启动 Websphere liberty 服务器时注意到以下异常。如何删除它?感谢任何帮助。我们同时安装了javaee7配置文件和webProfile-6.0功能。EAR 应用程序有一个使用 jee6.0 / “3.0” web的 WAR 文件.xml
我在Angular 12中运行ng测试时遇到以下问题: NullInjectorError:R3Injector错误(DynamicTestModule)[BaseURL- 错误:未定义应为true。位于UserContext。(http://localhost:9876/karma_webpack/webpack:/src/app/menu/menu.component.spec.ts:46:2
像组件一样,服务通常需要依赖,Angular通过服务类的构造函数注入。由于我们在Angular的引导过程之外初始化这些类,我们必须自己显式注入这些依赖。这是通过使用TestBed配置测试模块传回所需的依赖项(如HTTP模块)来实现的。
我是Java Web服务的新手,在过去的4天里我一直在坚持这一点。问题是,我打算创建供其他应用程序使用的web服务。要求web服务必须从一个表返回多条记录,因此我创建了一个示例web服务,下面是代码 界面 具有两个字符串对象的自定义类 这里是实现 使用JBossDeveloperStudio生成的WSDL是 当给出SOAP请求时,我得到强制转换异常[Lcom.org.ccb.test.Sample