Equals 方法,在两个对象类型不一致时应该返回 false
二、About Junit为了测试一座桥梁,不应该只在晴朗的天气,开一辆汽车从桥中间穿过,就认为已经完成了对桥梁的测试
class StandardTests {
@BeforeClass
static void initAll() {
}
@Before
void init() {
}
@Test
void justTest() {
...
assertTrue(...)
}
@After
void tearDown() {
}
@AfterClass
static void tearDownAll() {
}
}
要点 | 说明 |
@BeforeClass | 在当前类测试之前执行 |
@Before | 在每个测试方法之前执行 |
@Test | 声明测试方法 |
@After | 在每个测试方法之后执行 |
@AfterClass | 在当前类测试之后执行 |
public void runBare() throws Throwable {
Throwable exception = null;
setUp();
try {
runTest();
} catch (Throwable running) {
exception = running;
} finally {
try {
tearDown();
} catch (Throwable tearingDown) {
if (exception == null) exception = tearingDown;
}
}
if (exception != null) throw exception;
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring-boot.version}</version>
</dependency>
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoBoot.class)
public class RestApiTest {
private MockMvc mockMvc;
private ObjectMapper mapper = new ObjectMapper();
@Autowired
private WebApplicationContext context;
@Autowired
private RestDataManager dataManager;
private static final String CUSTOMER = "LiLei";
private Pet polly;
private Pet badboy;
@Before
public void setupMockMvc() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
initData();
}
private void initData() {
// 清除原有宠物信息
dataManager.clearPets(CUSTOMER);
// 添加新的宠物信息
polly = new Pet();
polly.setType("Bird");
polly.setName("Polly");
polly.setDescription("the rapid speaker");
dataManager.addPet(CUSTOMER, polly);
badboy = new Pet();
badboy.setType("Dog");
badboy.setName("BadBoy");
polly.setDescription("the monster");
dataManager.addPet(CUSTOMER, badboy);
}
@Test
public void testGet() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/rest/pets/{customer}/{petId}",
CUSTOMER, polly.getPetId()))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content()
.contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(MockMvcResultMatchers.content()
.json(mapper.writeValueAsString(polly)))
.andDo(MockMvcResultHandlers.print());
}
}
Annotation that can be specified on a test class that runs Spring Boot based tests.
Provides the following features over and above the regular Spring TestContext Framework:
1. Uses SpringBootContextLoader as the default ContextLoader when no specific @ContextConfiguration(loader=...) is defined.
2. Automatically searches for a @SpringBootConfiguration when nested @Configuration is not used, and no explicit classes are specified.
3. Allows custom Environment properties to be defined using the properties attribute.
4. Provides support for different webEnvironment modes, including the ability to start a fully running container listening on a defined or random port.
5. Registers a TestRestTemplate bean for use in web tests that are using a fully running container.
@Before
public void setupMockMvc() throws Exception {
// 启用mock
@Before
public void setupMockMvc() throws Exception {
// 启用mock
MockitoAnnotations.initMocks(this);
polly = new Pet();
polly.setType("Bird");
polly.setName("Polly");
polly.setDescription("the rapid speaker");
lilei = new Customer();
lilei.setName(CUSTOMER);
// 设置mock接口
Mockito.when(dataManager.getPets(Mockito.isA(String.class))).thenReturn(Arrays.asList(polly));
Mockito.when(dataManager.getCustomer(Mockito.isA(String.class))).thenReturn(lilei);
// 使用standaloneSetup,指定controller
// 由于不通过webappliationContext初始化,许多配置不会自动完成,此外bean的初始化方法也不会执行
mockMvc = MockMvcBuilders.standaloneSetup(controller)
.setMessageConverters(new MappingJackson2HttpMessageConverter()).build();
}
polly = new Pet();
polly.setType("Bird");
polly.setName("Polly");
polly.setDescription("the rapid speaker");
lilei = new Customer();
lilei.setName(CUSTOMER);
// 设置mock接口
Mockito.when(dataManager.getPets(Mockito.isA(String.class))).thenReturn(Arrays.asList(polly));
Mockito.when(dataManager.getCustomer(Mockito.isA(String.class))).thenReturn(lilei);
// 使用standaloneSetup,指定controller
// 由于不通过webappliationContext初始化,许多配置不会自动完成,此外bean的初始化方法也不会执行
mockMvc = MockMvcBuilders.standaloneSetup(controller)
.setMessageConverters(new MappingJackson2HttpMessageConverter()).build();
}
Mockito.when( somemethod ).thenReturn( some thing to return);
mockMvc = MockMvcBuilders.standaloneSetup(controller)..
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |