Maven - 07 测试依赖的范围

Maven - 07 测试依赖的范围,第1张

文章目录
    • 1. 依赖范围
      • 1. compile 和 test 对比
      • 2. compile 和 provided 对比
      • 3. 结论
    • 2. 测试
      • 1. 验证 compile 范围对 main 目录有效
      • 2. 验证test范围对main目录无效
      • 3. 验证test和provided范围不参与服务器部署
      • 4. 验证provided范围对测试程序有效

1. 依赖范围
<dependencies>
  <dependency>
    <groupId>junitgroupId>
    <artifactId>junitartifactId>
    <version>4.12version>
    <scope>testscope>
  dependency>

  <dependency>
    <groupId>javax.servletgroupId>
    <artifactId>javax.servlet-apiartifactId>
    <version>3.1.0version>
    <scope>providedscope>
  dependency>

  <dependency>
    <groupId>com.atguigu.mavengroupId>
    <artifactId>pro01-maven-javaartifactId>
    <version>1.0-SNAPSHOTversion>
    <scope>compilescope>
  dependency>
dependencies>

标签的位置:dependencies/dependency/scope

标签的可选值:compile/test/provided/system/runtime/import

1. compile 和 test 对比
main目录(空间)test目录(空间)开发过程(时间)部署到服务器(时间)
compile有效有效有效有效
test无效有效有效无效
2. compile 和 provided 对比
main目录(空间)test目录(空间)开发过程(时间)部署到服务器(时间)
compile有效有效有效有效
provided有效有效有效无效
3. 结论

compile:通常使用的第三方框架的 jar 包这样在项目实际运行时真正要用到的 jar 包都是以 compile 范围进行依赖的。比如 SSM 框架所需jar包。

test:测试过程中使用的 jar 包,以 test 范围依赖进来。比如 junit。

provided:在开发过程中需要用到的“服务器上的 jar 包”通常以 provided 范围依赖进来。比如 servlet-api、jsp-api。而这个范围的 jar 包之所以不参与部署、不放进 war 包,就是避免和服务器上已有的同类 jar 包产生冲突,同时减轻服务器的负担。说白了就是:“服务器上已经有了,你就别带啦!”

2. 测试 1. 验证 compile 范围对 main 目录有效

main目录下的类:HelloServlet 使用compile范围导入的依赖:pro01-atguigu-maven

测试方式:HelloServlet 能够使用 pro01-atguigu-maven 工程中的 Calculator 类,说明有效

2. 验证test范围对main目录无效

测试方式:在主体程序中导入org.junit.Test这个注解,然后执行编译。

具体 *** 作:在pro01-maven-java\src\main\java\com\atguigu\maven目录下修改Calculator.java

package com.atguigu.maven;

import org.junit.Test;

public class Calculator {
	
	public int sum(int i, int j){
		return i + j;
	}
	
}

执行Maven编译命令:

[ERROR] /D:/maven-workspace/space201026/pro01-maven-java/src/main/java/com/atguigu/maven/Calculator.java:[3,17] 程序包org.junit不存在
3. 验证test和provided范围不参与服务器部署

其实就是验证:通过compile范围依赖的jar包会放入war包,通过test范围依赖的jar包不会放入war包。

具体如下:

4. 验证provided范围对测试程序有效

测试方式是在pro02-maven-web的测试程序中加入servlet-api.jar包中的类。

修改:pro02-maven-web\src*test*\java\com\atguigu\maven*CalculatorTest.java*

package com.atguigu.maven;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;

import org.junit.Test;
import com.atguigu.maven.Calculator;

// 静态导入的效果是将Assert类中的静态资源导入当前类
// 这样一来,在当前类中就可以直接使用Assert类中的静态资源,不需要写类名
import static org.junit.Assert.*;

public class CalculatorTest{
	
	@Test
	public void testSum(){
		
		// 1.创建Calculator对象
		Calculator calculator = new Calculator();
		
		// 2.调用Calculator对象的方法,获取到程序运行实际的结果
		int actualResult = calculator.sum(5, 3);
		
		// 3.声明一个变量,表示程序运行期待的结果
		int expectedResult = 8;
		
		// 4.使用断言来判断实际结果和期待结果是否一致
		// 如果一致:测试通过,不会抛出异常
		// 如果不一致:抛出异常,测试失败
		assertEquals(expectedResult, actualResult);
		
	}
	
}

然后运行Maven的编译命令:mvn compile

然后看到编译成功。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/723338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存