最初发布在whathebea.github.io上,于23/10/2022
我知道今天是星期天,但我真的很想写东西。似乎我不能停止考虑编码并尝试完善我正在学习的一切。这可能是个人的,但是,其他人是否有这种感觉?在实习之前,尽管我非常敬业,但似乎现在我更加专注了。另外,我连续输掉了两场瓦尔兰特比赛,所以我感到有些沮丧。也许写帖子是一种分散自己的损失的方式...
好,所以今天我决定谈论测试。回答“为什么测试如此重要?”我问自己,谈论工具和更多事情。
为什么测试很重要?
想象您写了一些代码,然后有人更改了一些代码。如果您准备好测试,则很容易知道该代码是否仍然按预期工作。如果您没有测试,则必须手动测试代码。这很耗时,而且很容易错过一些东西,这很昂贵,尤其是如果您正在从事一个大项目。
朱尼特
什么是junit? junit是Java的单位测试框架。它用于测试最小的代码单位,这是一种方法。
这是Junit测试的示例:
@Test
public void testAdd() {
int result = calculator.add(1, 2);
assertEquals(3, result);
}
当您进行测试时,必须使用@Test
注释。 assertEquals
方法用于检查该方法的结果是否与预期结果相同。如果结果与预期结果不同,则测试将失败。
这是一个将失败的测试:
@Test
public void testAdd() {
int result = calculator.add(1, 2);
assertEquals(4, result);
}
失败,因为1+2不等于4。
摩根托
什么是Mockito? Mockito是Java的模拟框架。它用于模拟您正在测试的类的依赖项。
要使用Mockito,您必须使用@mock和@InjectMocks注释。 @mock注释用于创建模拟对象。 @InjectMocks注释用于将模拟对象注入您正在测试的类中。这是一个完整的示例:
@ExtendWith(MockitoExtension.class)
public class UserServiceTest {
@Mock
private UserRepository userRepository;
@InjectMocks
private UserService userService;
@Test
public void testGetUserById() {
User user = new User();
user.setId(1);
user.setName("Beatriz");
when(userRepository.findById(1)).thenReturn(Optional.of(user));
User result = userService.getUserById(1);
assertEquals(user, result);
}
}
在此示例中,我正在测试 getuserbyid uservice 类的方法。我嘲笑 userrepository 类,因为 uservice 类取决于 userrepository 类。当方法嘲笑 findbyid 方法时,我正在使用。我正在使用 theReturn 方法来指定 findbyid 方法将返回的内容。在这种情况下,它将返回包含用户对象的可选对象。我正在使用 assertequals 方法来检查 getuserbyid 方法的结果是否与预期的结果相同,即 user 对象我手动创建。
测试覆盖范围
测试覆盖范围是测试过程中执行多少行代码的量度。它用于测量测试多少代码。有不同类型的测试覆盖范围,但最常见的是线条覆盖率。它衡量测试期间执行了多少行代码。
IBM有一篇文章谈论如何查看您的Junit测试覆盖范围,您可以阅读here。
TDD(测试驱动开发)
tdd意味着测试驱动的开发,名称本身是相当不言自明的。这是一个软件开发过程,依赖于非常短的开发周期的重复:要求将其转换为非常具体的测试用例,然后改进了该软件以通过新测试。
TDD有不同类型的类型,但最常见的是红绿色反对者循环。这是一个由三个步骤组成的周期:
- 写一个测试
- 运行测试
- 重构代码
因此,您几乎要编写测试,然后编写代码以进行测试。然后,您对代码进行重构,以使其更可读性和高效。 IBM关于TDD有很多免费内容,您可以阅读here。
结论
我希望我的帖子有帮助!我觉得这确实可以帮助我写自己的知识。我必须稍微推动自己制作代码示例并写下它,但我认为这是值得的。希望您喜欢它,如果您有任何疑问或建议,请在评论中告诉我!感谢您的阅读!