前言
- 最近在跟着一个springboot的开发教程在学。但是他不是用的主流的maven工程建的项目,而是用的gradle。因为没有用过gradle,所以为了按照他讲的内容来系统学一下,只能把gradle学一学了。在他课程里,跳跃的也很快的,在利用Eclipse插件编写gradle项目的时候,他是直接已经打开了项目了,却没有介绍,是如何把项目导入进去的。一脸懵逼,只能自己去网上先学下Eclipse是如何把项目导入进去的。
- 网上也有很多教程,也参照的一下 ,下面是我如何导入成功的一个过程记录。一方面自己以后回头查看。
软件插件版本
- eclipse : Oxygen.3a Release (4.7.3a)
- gradle:4.9
- jdk :1.8.0_151
Eclipse可以导入项目的前提
- 安装有gradle的插件
- gradle插件 需要配置本地的gradle安装路径
- 是gradle的工程项目
导入gradle项目的步骤
- 安装gradle插件 (自带了有可以忽视此步)
-
这里用的是Eclipse在线安装。跟Eclipse安装其他的插件一样,
首先是在help->enterMartketplace->在搜索框中输入gradle->go即可
然后在eclipse中配置本地的gradle
步骤:eclipse中的window中的Preference,找到Gradle,然后如下如配置本地gradle的安装路径,点击apply
-
- gradle工程项目
- 1.接着上一篇文章的项目intiallizr-start所在的文件夹:D:\gradle-work的路径下
再新建一个hello-world文件夹。
然后再把intiallizr-start文件下的先关文件拷贝过去,如下如所示
-
2.接着修改hello-world下的文件build.gradle和setting.gradle
build.gradle是只修改一处:修改jar的版本号。目的是为了方便java编译运行的时候输入方便,不用写这么长
- 1.接着上一篇文章的项目intiallizr-start所在的文件夹:D:\gradle-work的路径下
修改setting.gradle 文件:目的是为了更改项目名称为对应的名字,这里是更改为hello-world
- 3.上面的文件更改完成后,下面就是通过命令窗口输入命令行进行build和编译运行。首先是在hello-world目录下打开cmd命令窗口
然后输入 gradle build。点击确定进行项目构建。然后在输入
java -jar build/libs/hello-world-1.0.0.jar对项目进行编译运行,就能够看到springboot的图标和Tomcat的8080端口。那么到此步,eclipse的导入需要的gradle项目完成
-
最后一步是利用eclipse导入gradle项目
点击file下的import,然后选择Existing Gradle Project
然后下一步next,next,填写刚才创建的gradle项目,如下图
然后点击finish即可自动完成该项目所需要的jar包和导入gradle项目了
如下图:
-
下面是导入gradle的项目结构,如下图,这里我把原来的包名和启动类名称改了一下
然后再新建一个controller包,再该包下新建一个HelloWorldController类
如下
package com.waylau.spring.boot.blog.controller;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* perform:执行一个RequestBuilder请求,会自动执行SpringMVC的流程并映射到
* 相应的控制器执行处理;
* andExpect:添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确;
* @author: crj
* @date: 2018年8月20日 下午4:35:55
*/
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc //为了注入MockMvc
public class HelloWorldControllerTest {
@Autowired
private MockMvc mockMvc;//这里是利用MockMvc这个来测试
@Test
public void testHello() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(org.springframework.http.MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("hello world!")));
}
}
在这里在恶补一下MockMvc的知识
文章链接
随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的。从Spring 3.2开始Spring了Spring Web测试框架,Spring MVC测试框架提供了对服务器端和客户端(基于RestTemplate的客户端)提供了支持。
对于服务器端:在Spring 3.2之前,我们测试时一般都是直接new控制器,注入依赖,然后判断返回值。
package com.gtyyx.dao;
import static org.junit.Assert.assertEquals;
import java.util.UUID;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.gtyyx.model.UserLogin;
/**
* @author: crj
* @date: 2018年8月16日 上午10:00:15
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserLoginMapperTest {
@Autowired
private UserLoginMapper userLoginmapper;
@Test
public void test1() throws Exception {
UserLogin user = new UserLogin();
user.setTusername("wsl1");
user.setTuserordrowid(UUID.randomUUID().toString());
user.setTuserpassword("123456");
int effectedNum = userLoginmapper.insert(user);
assertEquals(1,effectedNum);
}
}
但是我们无法连同Spring MVC的基础设施(如DispatcherServlet调度、类型转换、数据绑定、拦截器等)一起测试,另外也没有现成的方法测试如最终渲染的视图(@ResponseBody生成的JSON/XML、JSP、Velocity等)内容是否正确。从Spring 3.2开始这些事情都可以完成了。而且可以测试完整的Spring MVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试。下面是上面HelloWorldController的测试用例
package com.waylau.spring.boot.blog.controller;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* @author: crj
* @date: 2018年8月20日 下午4:35:55
*/
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HelloWorldControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testHello() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(org.springframework.http.MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("hello world!")));
}
}
运行hello-worldd的方式
- java -jar build/libs/hello-world-1.0.0.jar
- gradle bootRun
- gradlew bootRun
- eclipse 下运行Application.java主文件
以上上面的记录都是根据学习老卫的springboot视频教程的所做的,仅当学习所用。