软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
- 单元 vs 集成测试
- 白盒 vs 黑盒测试
- 自动 vs 手动测试
-回归测试
-压力测试
Java断言是一种用于在代码中检查和验证程序员预期的结果的语句,它可以在测试和调试阶段启用,也可以在生产环境中禁用。断言的语法是:
assert condition; // 如果条件为true,继续执行;如果条件为false,抛出AssertionError异常 assert condition : message; // 如果条件为false,抛出AssertionError异常,并附带指定的消息
断言的作用是帮助程序员发现和排除代码中的逻辑错误,提高代码的质量和稳定性。断言不应该用于处理可恢复的错误,而应该用于捕获不可能发生的情况。断言也不应该影响程序的正常逻辑,即使断言被禁用,程序也应该能够正常运行。
- package org.example;
-
- public class MainTest {
- public static void main(String[] args) {
- test(-10); // 调用test方法,传入-10作为参数
- }
- public static void test(int age) {
- // assert关键字,再加一个布尔表达式,当表达式结果为false时,程序就会退出
- // 并抛出一个AssertionError,所以断言是error级别的
- assert age >= 0 : "不能输入这种不合理的年龄啊"; // 满足条件则继续运行
- System.out.println("继续执行,输入的年龄是:" + age); // 输出年龄
- }
- }
Java记录日志是一种用于在代码中记录和输出程序运行情况的方法,它可以帮助程序员调试、分析、优化和审计系统。Java记录日志的方式有很多种,主要有以下几种:
- 使用System.out.println()或者System.err.println()方法直接在控制台打印消息。这是最简单的方式,但也是最不推荐的方式,因为它不能控制日志的级别、格式、输出目标等,也不利于日志的管理和维护。
- 使用java.util.logging包中的日志框架。这是Java自带的日志框架,它提供了Logger、Handler、Formatter、Filter等类来实现日志的记录、输出、格式化和过滤等功能。它支持将日志输出到文件、控制台、网络等不同的目标,也支持定义不同的日志级别和过滤条件。
- 使用第三方的日志框架,如Log4j、Logback、SLF4J等。这些日志框架都是基于Apache开源社区开发的,它们都比java.util.logging包中的日志框架更加强大和灵活,提供了更多的功能和特性,如异步日志、多线程日志、性能优化、配置文件等。
- package org.example;
-
- import java.util.logging.Level;
- import java.util.logging.Logger;
-
- public class MainTest1 {
- public static void main(String[] args) {
- Logger logger = Logger.getGlobal();
- logger.setLevel(Level.INFO);
- logger.finest("finest log 777777777"); // 去掉msg:,直接传入字符串参数
- logger.finer("finer log 666666666"); // 同上
- logger.fine("fine log 5555555555"); // 同上
- logger.config("config log 4444444444"); // 同上
- logger.info("info log 33333333"); // 同上
- logger.warning("warning log 222222222"); // 同上
- logger.severe("severe log 1111111111"); // 同上
- }
- }
Junit是一个用于Java编程语言的单元测试框架,它在测试驱动开发中起到了重要的作用,它是一个被称为xUnit的单元测试框架家族的一员,它起源于JUnit1。JUnit可以帮助Java开发者编写和运行可重复的测试用例,它是由Erich Gamma和Kent Beck最初开发的,它是xUnit架构的一个实例。顾名思义,它用于对一小块代码进行单元测试
配置
-
-
junit -
junit -
4.12 -
代码
- package org.example;
-
- public class Triangle {
- public boolean judgeEdges(int a, int b, int c) {
- boolean result = true;
- // 边长非负性
- if (a <= 0 || b <= 0 || c <= 0) { // 修正了括号和逻辑运算符的错误
- return false;
- }
- // 两边和大于第三边
- if (a + b <= c || b + c <= a || c + a <= b) { // 修正了数学表达式和逻辑运算符的错误
- result = false;
- }
- return result;
- }
- }
- package org.example;
-
- import org.junit.Test;
-
- import static org.junit.Assert.*; // 导入Assert类的所有静态方法,自JDK1.5引入
- public class TriangleTest {
- @Test
- public void test() {
- assertEquals(true, new Triangle().judgeEdges(3, 8, 5)); // 添加括号和参数,调用judgeEdges方法
- //assertEquals(false, new Triangle().judgeEdges(1, 2, 3)); // 同上,去掉
标签 - }
- }
@before是一个Junit 4中的注解,用于标记一个方法,表示在每个测试方法执行之前都要执行这个方法。通常用于做一些测试前的准备工作,如初始化变量,创建对象等。@before注解的方法必须是public void类型,且不能有参数
- public class CalculatorTest {
-
- private Calculator calculator; //声明一个Calculator对象
-
- @Before //使用@Before注解标记init方法
- public void init() {
- calculator = new Calculator(); //在每个测试方法执行前,创建一个Calculator对象
- }
-
- @Test //使用@Test注解标记addTest方法
- public void addTest() {
- int result = calculator.add(1, 2); //调用Calculator对象的add方法
- assertEquals(3, result); //断言结果等于3
- }
-
- @Test //使用@Test注解标记subtractTest方法
- public void subtractTest() {
- int result = calculator.subtract(3, 1); //调用Calculator对象的subtract方法
- assertEquals(2, result); //断言结果等于2
- }
- }
@after是一个Junit 4中的注解,用于标记一个方法,表示在每个测试方法执行之后都要执行这个方法。通常用于做一些测试后的清理工作,如关闭资源,释放内存等。@after注解的方法必须是public void类型,且不能有参数
- public class CalculatorTest {
-
- private Calculator calculator; //声明一个Calculator对象
-
- @Before //使用@Before注解标记init方法
- public void init() {
- calculator = new Calculator(); //在每个测试方法执行前,创建一个Calculator对象
- }
-
- @Test //使用@Test注解标记addTest方法
- public void addTest() {
- int result = calculator.add(1, 2); //调用Calculator对象的add方法
- assertEquals(3, result); //断言结果等于3
- }
-
- @Test //使用@Test注解标记subtractTest方法
- public void subtractTest() {
- int result = calculator.subtract(3, 1); //调用Calculator对象的subtract方法
- assertEquals(2, result); //断言结果等于2
- }
-
- @After //使用@After注解标记deleteObject方法
- public void deleteObject() {
- calculator = null; //在每个测试方法执行后,将Calculator对象置为null
- }
- }