java测试类基本信息_[Java-基础]单元测试Junit

Junit是一个用于单元测试的小框架

从@Test开始

在某个测试程序的方法名上加上注解@Test,不需要main函数,可以直接点击测试方法上的Run As --->Junit Test,表示运行该测试程序,其它的不运行。

需要注意的是方法权限只能是public,不能用static修饰

85584146f3cc5357d18721220265d189.png

如果有多个,点击类旁边的Run即可run多个test方法

基本注解

@BeforeClass – 表示在类中的任意public static void方法执行之前执行

@AfterClass – 表示在类中的任意public static void方法执行之后执行

@Before – 表示在任意使用@Test注解标注的public void方法执行之前执行

@After – 表示在任意使用@Test注解标注的public void方法执行之后执行

public class BasicAnnotationTest {

// Run once, e.g. Database connection, connection pool

@BeforeClass

public static void runOnceBeforeClass() {

System.out.println("@BeforeClass - runOnceBeforeClass");

}

// Run once, e.g close connection, cleanup

@AfterClass

public static void runOnceAfterClass() {

System.out.println("@AfterClass - runOnceAfterClass");

}

// Should rename to @BeforeTestMethod

// e.g. Creating an similar object and share for all @Test

@Before

public void runBeforeTestMethod() {

System.out.println("@Before - runBeforeTestMethod");

}

// Should rename to @AfterTestMethod

@After

public void runAfterTestMethod() {

System.out.println("@After - runAfterTestMethod");

}

@Test

public void test_method_1() {

System.out.println("@Test - test_method_1");

}

@Test

public void test_method_2() {

System.out.println("@Test - test_method_2");

}

}

输出结果是:

@BeforeClass - runOnceBeforeClass

@Before - runBeforeTestMethod

@Test - test_method_1

@After - runAfterTestMethod

@Before - runBeforeTestMethod

@Test - test_method_2

@After - runAfterTestMethod

@AfterClass - runOnceAfterClass

基本方法

assertTrue()

如果为true,则运行success,反之Failure

没有错误提示,会报错

assertEquals()

f76d2699c00ce54dad350699c5d4c490.png

有两个参数,我们可以把一个预期结果作为1参传递进去. 2参传递我们需要测试的方法. 然后执行. 相等, 代码继续往下执行, 不相等, 中断执行, 抛出异常信息。

异常信息:

59569ceffd8057e05f8a752ee0ff19cf.png

@SpringBootTest用法

写单元测试的时候肯定要用到main中的类,一个笨办法是直接new一个对象。

但是这样在复杂的项目中是不可取的。

通过SpringBootTest的注解,它会初始化一个spring的上下文

然后通过@Autowired 注解,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。

@SpringBootTest

public class UserService {

@Autowired

private UserRepository userRepository;//就可以直接这么用

public void save(){

userRepository.save();

}

}

Mock

@RunWith(SpringRunner.class)//启动Spring

@SpringBootTest(classes = Demo04.class)

public class test1 {

@Mock

private Demo04 demo04;

@Test

public void t2(){

when(demo04.Add(1,1)).thenReturn(3);

assertEquals(3,demo04.Add(1,1));

System.out.println("abc");

}

}

结果是通过。

常见错误

you need to use @ContextConfiguration or @SpringBootTest(classes=...)

@SpringBootTest搜索@SpringBootApplication注解的类,是按照test所在类的package往父层级逐级搜索。 所以解决办法一:@SpringBootTest(classes = Application.class),解决方案二:修改test所在类的package,放到@SpringBootApplication子package

一开始我还真的加了@SpringBootTest(classes = Application.class)23333

参考

其他都在文中指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值