test scope is actually enough

This commit is contained in:
金戟 2020-12-23 20:23:09 +08:00
parent 459fea37c3
commit 508610b0c8
5 changed files with 7 additions and 7 deletions

View File

@ -20,7 +20,7 @@
<groupId>com.alibaba.testable</groupId>
<artifactId>testable-all</artifactId>
<version>${testable.version}</version>
<scope>provided</scope>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>

View File

@ -33,7 +33,7 @@
<groupId>com.alibaba.testable</groupId>
<artifactId>testable-all</artifactId>
<version>${testable.version}</version>
<scope>provided</scope>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>

View File

@ -3,7 +3,7 @@
如今关于私有方法是否应该做单元测试的争论正逐渐消停,开发者的普遍实践已经给出事实答案。通过公有方法间接测私有方法在很多情况下难以进行,开发者们更愿意通过修改方法可见性的办法来让原本私有的方法在测试用例中变得可测。
此外在单元测试中时常会需要对被测对象进行特定的成员字段初始化但有时由于被测类的构造方法限制使得无法便捷的对这些字段进行赋值。那么能否在不破坏被测类型封装的情况下允许单元测试用例内的代码直接访问被测类的私有方法和成员字段呢TestableMock提供了两种简单的解决方案。
此外,在单元测试中时常会需要对被测对象进行特定的成员字段初始化,但有时由于被测类的构造方法限制,使得无法便捷的对这些字段进行赋值。那么,能否在不破坏被测类型封装的情况下,允许单元测试用例内的代码直接访问被测类的私有方法和成员字段呢?`TestableMock`提供了两种简单的解决方案。
### 方法一:使用`@EnablePrivateAccess`注解

View File

@ -27,7 +27,7 @@
<groupId>com.alibaba.testable</groupId>
<artifactId>testable-all</artifactId>
<version>${testable.version}</version>
<scope>provided</scope>
<scope>test</scope>
</dependency>
</dependencies>
```

View File

@ -16,7 +16,7 @@
这些"副作用"的本质归纳来说可分为两类:**修改外部变量**和**调用外部方法**。
通过TestableMock的私有字段访问和Mock校验器可以很方便的实现对"副作用"的结果检查。
通过`TestableMock`的私有字段访问和Mock校验器可以很方便的实现对"副作用"的结果检查。
### 1. 修改外部变量的void方法
@ -36,7 +36,7 @@ class Demo {
}
```
若要测试此方法可以利用TestableMock直接读取私有成员变量的值对结果进行校验
若要测试此方法,可以利用`TestableMock`直接读取私有成员变量的值,对结果进行校验:
```java
@EnablePrivateAccess // 启用TestableMock的私有成员访问功能
@ -69,7 +69,7 @@ class Demo {
}
```
若要测试此方法可以利用TestableMock快速Mock掉`System.out.println`方法。在Mock方法体里可以继续执行原调用相当于并不影响本来方法功能仅用于做调用记录也可以直接留空相当于去除了原方法的副作用
若要测试此方法,可以利用`TestableMock`快速Mock掉`System.out.println`方法。在Mock方法体里可以继续执行原调用相当于并不影响本来方法功能仅用于做调用记录也可以直接留空相当于去除了原方法的副作用
在执行完被测的void类型方法以后用`InvokeVerifier.verify()`校验传入的打印内容是否符合预期: