我正在以MVCS结构构建Web应用程序。
我在Service类中获得了所有带有逻辑的方法。
我如何使用junit对其进行测试?可以给我解释一下它如何工作吗?还是提供课程/文章?我尝试了很多资源,但没有一个能解决我的问题。
我也很愿意提出建议,也许我的设计在这里很糟糕...
当我使方法成为公共静态方法时,它可以工作,但是我不确定是否应该是这种情况。
当我尝试@Autowire
服务字段时,我收到NullPointerException:(
@Service
public class MapValueServiceImpl implements MapValueService {
methodThatDoesSomething() {
}
}
class MapValueServiceImplTest {
@Test
public void TestingMethodThatDoesSomething() {
assertEquals(Something, methodThatDoesSomething())
}
}
谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
请考虑以下示例服务:
@Service
public class MapValueServiceImpl implements MapValueService {
@Autowired private GreetingService greetingService;
String getGreeting(String name) {
return greetingService.buildGreeting(name);
}
}
如果引入了模仿(假设您正在使用Maven):
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
然后您可以执行以下操作...
@RunWith(MockitoJUnitRunner.class)
public class MapValueServiceImplTest {
@Mock private GreetingService greetingService; // <-- define your mocks
@InjectMocks private MapValueServiceImpl toTest; // <-- your mocks will be injected
// Now you can test dependency interaction...
@Test
public void whenNamePassedThenCorrectGreetingReturned() {
// Arrange
final String name = "George";
final String greeting = "Hello " + name;
doReturn(greeting).when(greetingService).buildGreeting(name);
// Act
final String result = toTest.getGreeting(name);
// Assert
assertThat(result, is(greeting));
}
}
这是一个纯单元测试(不需要Spring上下文)。您可以在此处找到有关Mockito的更多信息:https://site.mockito.org/