Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
howtodoinjava-zh
提交
ff078aab
H
howtodoinjava-zh
项目概览
OpenDocCN
/
howtodoinjava-zh
10 个月 前同步成功
通知
1
Star
82
Fork
8
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
howtodoinjava-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ff078aab
编写于
6月 06, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-06-06 10:51:20
上级
c400f7bf
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
45 addition
and
45 deletion
+45
-45
docs/misc/125.md
docs/misc/125.md
+1
-1
docs/misc/187.md
docs/misc/187.md
+1
-1
docs/misc/205.md
docs/misc/205.md
+1
-1
docs/misc/208.md
docs/misc/208.md
+15
-15
docs/misc/209.md
docs/misc/209.md
+21
-21
docs/misc/248.md
docs/misc/248.md
+1
-1
docs/misc/250.md
docs/misc/250.md
+2
-2
docs/misc/273.md
docs/misc/273.md
+1
-1
docs/misc/277.md
docs/misc/277.md
+1
-1
docs/misc/55.md
docs/misc/55.md
+1
-1
未找到文件。
docs/misc/125.md
浏览文件 @
ff078aab
...
...
@@ -51,7 +51,7 @@ Hibernate 中有一个简单直观的 API,可以对数据库表示的对象执
1.
**`hibernate.cfg.xml`**
- 此配置文件将用于存储数据库连接信息和架构级别设置。
2.
**`EmployeeEntity.java`**
- 此类将引用具有 Hiberate 注解的 Java POJO。
3.
**`HibernateUtil.java`**
– 此类将具有
实用程序
方法,这些方法将用于创建会话工厂和会话对象。
3.
**`HibernateUtil.java`**
– 此类将具有
工具
方法,这些方法将用于创建会话工厂和会话对象。
4.
**`TestHibernate.java`**
- 此类将用于测试我们的配置设置和
`Emplyee`
实体注解。
在进入代码之前,让我们看一下项目的设置并添加
[
**maven**
](
https://maven.apache.org/
"maven"
)
依赖项,这些依赖项需要添加到
`pom.xml`
以包括所有编译时间和运行时依赖项。
...
...
docs/misc/187.md
浏览文件 @
ff078aab
...
...
@@ -49,7 +49,7 @@ public final class MathUtils
#### 2.2 参数化测试
让我们为上述数学
实用程序
类编写参数化测试。
让我们为上述数学
工具
类编写参数化测试。
```
java
...
...
docs/misc/205.md
浏览文件 @
ff078aab
...
...
@@ -84,7 +84,7 @@ PASSED: testMethodThree
```
恭喜,您已经使用 Eclipse 中的 TestNG 运行器配置成功执行了属于特定组的测试方法。 您还可以通过在“浏览”部分中选择相应的组来使用该
实用程序
执行多个组。 通常,最好使用基于 TestNG-XML 的执行来执行属于特定组的测试方法。
恭喜,您已经使用 Eclipse 中的 TestNG 运行器配置成功执行了属于特定组的测试方法。 您还可以通过在“浏览”部分中选择相应的组来使用该
工具
执行多个组。 通常,最好使用基于 TestNG-XML 的执行来执行属于特定组的测试方法。
## 通过`testng.xml`运行 TestNG 组
...
...
docs/misc/208.md
浏览文件 @
ff078aab
...
...
@@ -62,15 +62,15 @@ public void saveTest()
```
######
@Mock 和@Spy
之间的区别
######
`@Mock`和`@Spy`
之间的区别
使用
@Mock 时,mockito 将创建 Class 的准系统
shell 实例,完全可以跟踪与之的交互。 这不是真实的对象,也不维护其状态更改。
使用
`@Mock`
时,mockito 将创建类的准系统的
shell 实例,完全可以跟踪与之的交互。 这不是真实的对象,也不维护其状态更改。
使用
@Spy
时,mockito 创建类的真实实例并跟踪与之的每次交互。 它保持状态更改。
使用
`@Spy`
时,mockito 创建类的真实实例并跟踪与之的每次交互。 它保持状态更改。
#### 1.3
@捕捉者
#### 1.3
`@Captor`
**@Captor**
注解用于创建
`ArgumentCaptor`
实例,该实例用于
**捕获方法参数值**
进行进一步的声明。
`@Captor`
注解用于创建
`ArgumentCaptor`
实例,该实例用于
**捕获方法参数值**
进行进一步的声明。
请注意,mockito 使用参数类的
`equals()`
方法验证参数值。
...
...
@@ -97,13 +97,13 @@ public void saveTest()
```
#### 1.4
@InjectMock
#### 1.4
`@InjectMock`
在
Mock中,我们需要创建要测试的类的对象,然后插入其依赖项(
*模拟*
)以完全测试行为。 为此,我们使用
**@InjectMock**
注解。
在
Mock 中,我们需要创建要测试的类的对象,然后插入其依赖项(
*模拟*
)以完全测试行为。 为此,我们使用
`@InjectMock`
注解。
@InjectMock 标记应在其上执行注射的字段。 Mockito 将尝试仅通过构造器注入,setter
注入或属性注入按此顺序注入模拟。 如果任何给定的注射策略失败,则 Mockito 不会报告失败。
`@InjectMock`
标记应在其上执行注射的字段。 Mockito 将尝试仅通过构造器注入,设置器
注入或属性注入按此顺序注入模拟。 如果任何给定的注射策略失败,则 Mockito 不会报告失败。
> 阅读更多: [
@Mock 和@InitMock
注解之间的区别](https://howtodoinjava.com/mockito/mockito-mock-initMock/)
> 阅读更多: [
`@Mock`和`@InitMock`
注解之间的区别](https://howtodoinjava.com/mockito/mockito-mock-initMock/)
## 2\. 如何初始化 Mockito 注解
...
...
@@ -126,7 +126,7 @@ public void saveTest()
```
2.
在单元测试类的
**@Before**
方法中使用
`MockitoAnnotations.initMock(this)`
。
2.
在单元测试类的
`@Before`
方法中使用
`MockitoAnnotations.initMock(this)`
。
```java
public class ExampleTest {
...
...
@@ -166,13 +166,13 @@ public void saveTest()
```
在评论中,将您与
*模拟注解*
有关的问题放到我这里。
在评论中,将您与
Mockito 注解
有关的问题放到我这里。
学习愉快!
参考文献:
[
模拟 Java Doc
](
https://static.javadoc.io/org.mockito/mockito-core/2.23.4/org/mockito/Mock.html
)
[
Spy Java Doc
](
https://static.javadoc.io/org.mockito/mockito-core/2.23.4/org/mockito/Spy.html
)
[
Captor Java Doc
](
https://static.javadoc.io/org.mockito/mockito-core/2.23.4/org/mockito/Captor.html
)
[
InjectMock Java Doc
](
https://static.javadoc.io/org.mockito/mockito-core/2.23.4/org/mockito/InjectMock.html
)
\ No newline at end of file
[
`Mock` Java Doc
](
https://static.javadoc.io/org.mockito/mockito-core/2.23.4/org/mockito/Mock.html
)
[
`Spy` Java Doc
](
https://static.javadoc.io/org.mockito/mockito-core/2.23.4/org/mockito/Spy.html
)
[
`Captor` Java Doc
](
https://static.javadoc.io/org.mockito/mockito-core/2.23.4/org/mockito/Captor.html
)
[
`InjectMock` Java Doc
](
https://static.javadoc.io/org.mockito/mockito-core/2.23.4/org/mockito/InjectMock.html
)
\ No newline at end of file
docs/misc/209.md
浏览文件 @
ff078aab
# Mockito –
@Mock 和@InjectMock
注解之间的区别
# Mockito –
`@Mock`和`@InjectMock`
注解之间的区别
> 原文: [https://howtodoinjava.com/mockito/mockito-mock-injectMock/](https://howtodoinjava.com/mockito/mockito-mock-injectMock/)
在使用
[
junit
](
https://howtodoinjava.com/junit-4/
)
和 Mockito 进行
[
单元测试
](
https://howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/
)
的过程中,我们使用
`@Mock`
和
`@InjectMock`
注解来创建要测试的对象和依赖项。 了解 mockito 中
@Mock 和@InjectMock 注解之间的
*区别。*
在使用
[
junit
](
https://howtodoinjava.com/junit-4/
)
和 Mockito 进行
[
单元测试
](
https://howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/
)
的过程中,我们使用
`@Mock`
和
`@InjectMock`
注解来创建要测试的对象和依赖项。 了解 mockito 中
`@Mock`
和
`@InjectMock`
注解之间的
*区别*
。
## 1\. Mock 对象与 Stub 对象之间的区别
重要的是要了解 Mock 对象与
[
对象
](
https://howtodoinjava.com/java/basics/how-to-create-a-class-in-java/
)
之间的区别。 对象是类的实际实例,使用对象引用调用的任何方法都将执行类文件中定义的方法主体。
重要的是要了解 Mock 对象与
[
Stub
对象
](
https://howtodoinjava.com/java/basics/how-to-create-a-class-in-java/
)
之间的区别。 对象是类的实际实例,使用对象引用调用的任何方法都将执行类文件中定义的方法主体。
Mock 对象是用于隐藏无法在测试环境中测试的依赖项的接口。 数据库,网络位置等。使用模拟引用调用的方法不会执行类文件中定义的方法主体,而是使用
**when-thenReturn**
方法组合来配置方法行为。
Mock 对象是用于隐藏无法在测试环境中测试的依赖项的接口。 数据库,网络位置等。使用模拟引用调用的方法不会执行类文件中定义的方法主体,而是使用
`when-thenReturn`
方法组合来配置方法行为。
在 junit 测试中,我们为需要测试的类和要调用的方法创建对象。 我们为依赖项创建了模拟,这些依赖项不会出现在测试环境中,并且对象依赖于该依赖项来完成方法调用。
## 2\.
@Mock 和@InjectMock
之间的区别
## 2\.
`@Mock`和`@InjectMock`
之间的区别
在基于 Mockito 的 junit 测试中,
**@Mock 注解创建模拟,而@InjectMock
创建类对象**
。
在基于 Mockito 的 junit 测试中,
**`@Mock`注解创建模拟,而`@InjectMock`
创建类对象**
。
>
@Mock –
创建模拟
>
@InjectMock –
创建对象并注入模拟的依赖项
>
`@Mock` –
创建模拟
>
`@InjectMock` –
创建对象并注入模拟的依赖项
*
使用
@InjectMock
创建需要在测试类中进行测试的类实例。
*
当需要为给定类执行实际方法主体时,请使用
@InjectMock
。
*
当我们需要使用 Mock 对象初始化的所有内部依赖项以正常工作方法时,请使用
@InjectMock
。
*
使用
@Mock
创建模拟,以支持要测试的类的测试。
*
带有
@Mock
注解的带注解的类(待测试)依赖项。
*
我们必须为 Mock 对象定义
when-thenRetrun
方法,在实际测试执行期间将调用哪些类方法。
*
使用
`@InjectMock`
创建需要在测试类中进行测试的类实例。
*
当需要为给定类执行实际方法主体时,请使用
`@InjectMock`
。
*
当我们需要使用 Mock 对象初始化的所有内部依赖项以正常工作方法时,请使用
`@InjectMock`
。
*
使用
`@Mock`
创建模拟,以支持要测试的类的测试。
*
带有
`@Mock`
注解的带注解的类(待测试)依赖项。
*
我们必须为 Mock 对象定义
`when-thenRetrun`
方法,在实际测试执行期间将调用哪些类方法。
## 3\.
@Mock 和@InjectMock
示例
## 3\.
`@Mock`和`@InjectMock`
示例
让我们通过示例来了解
@Mock 和@InjectMock 之间的区别。 在此示例中,我们具有类
`MainClass`
,其类具有方法
**save()**
。
让我们通过示例来了解
`@Mock`
和
`@InjectMock`
之间的区别。 在此示例中,我们具有类
`MainClass`
,其类具有方法
`save()`
。
`MainClass`
依赖于
`DatabaseDAO`
和
`NetworkDAO`
。 当我们调用
`MainClass.save()`
方法时,它在内部调用两个相关对象的保存方法。
...
...
@@ -74,9 +74,9 @@ public class NetworkDAO {
```
#### 3.2
MainClass
的 Junit 测试
#### 3.2
`MainClass`
的 Junit 测试
让我们为
MainClass
编写 junit 测试。
让我们为
`MainClass`
编写 junit 测试。
```
java
import
static
org
.
junit
.
Assert
.
assertEquals
;
...
...
@@ -121,11 +121,11 @@ Saved in network in Main class
```
在上面的测试中,将打印用
MainClass.save()方法编写的语句,但不打印从属类。 它证明了方法主体仅针对 MainClass 的 save()方法执行,因为我们使用
`@InjectMock`
注解创建了 MainClass
的实际对象。 对于依赖类,我们使用了模拟。
在上面的测试中,将打印用
`MainClass.save()`
方法编写的语句,但不打印从属类。 它证明了方法主体仅针对
`MainClass`
的
`save()`
方法执行,因为我们使用
`@InjectMock`
注解创建了
`MainClass`
的实际对象。 对于依赖类,我们使用了模拟。
#### 3.3 验证模拟的方法调用
要验证是否已调用模拟方法,我们必须使用
Mock提供的实用程序方法
**verify()**
。 它有助于验证在执行实际的测试类方法时是否已执行了模拟方法。
要验证是否已调用模拟方法,我们必须使用
Mock 提供的工具方法
`verify()`
。 它有助于验证在执行实际的测试类方法时是否已执行了模拟方法。
```
java
@Test
...
...
@@ -142,7 +142,7 @@ public void validateTest()
## 4 结论
在此 mockito 教程中,我们了解了
@Mock 和@InjectMock 注解之间的
*区别。 我们了解了在 junit 测试中将这些注解应用于类时发生了什么。*
在此 mockito 教程中,我们了解了
`@Mock`
和
`@InjectMock`
注解之间的
*区别*
。 我们了解了在 junit 测试中将这些注解应用于类时发生了什么。
学习愉快!
...
...
docs/misc/248.md
浏览文件 @
ff078aab
...
...
@@ -40,7 +40,7 @@ AngularJS 中的模型和视图比大多数 JavaScript 客户端框架中的模
## 了解 AngularJS 组件
我们已经知道 AngularJS 是基于 MVC 的结构化框架,因此我们将需要编写许多组件和
实用程序
以使您的应用代码结构化并得到良好维护。 让我们简短地学习这些组件。 我们将在下一个教程中详细讨论。
我们已经知道 AngularJS 是基于 MVC 的结构化框架,因此我们将需要编写许多组件和
工具
以使您的应用代码结构化并得到良好维护。 让我们简短地学习这些组件。 我们将在下一个教程中详细讨论。
*
#### 模组
...
...
docs/misc/250.md
浏览文件 @
ff078aab
...
...
@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/angularjs/angularjs-services-built-in-and-custom/](https://howtodoinjava.com/angularjs/angularjs-services-built-in-and-custom/)
正如我们在
[
角度介绍
](
//howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/
)
中了解到的,服务是
**无状态对象和单例对象**
,它们为 Web 应用提供功能。 例如,
`$http`
是用于对 Web 服务器进行 HTTP 调用的核心服务。 简单来说,您可以将角服务假定为可重用代码的
**块,它执行一个或多个相关任务(例如 Java 中带有静态方法的
实用程序
类)。 在 AngularJS 中,有几个内置服务–您也可以创建自己的自定义服务。**
正如我们在
[
角度介绍
](
//howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/
)
中了解到的,服务是
**无状态对象和单例对象**
,它们为 Web 应用提供功能。 例如,
`$http`
是用于对 Web 服务器进行 HTTP 调用的核心服务。 简单来说,您可以将角服务假定为可重用代码的
**块,它执行一个或多个相关任务(例如 Java 中带有静态方法的
工具
类)。 在 AngularJS 中,有几个内置服务–您也可以创建自己的自定义服务。**
```
java
Table
of
Contents
...
...
@@ -26,7 +26,7 @@ module.controller('DemoController', function( $http ){
| 服务名称 | 描述 |
|
`$anchorScroll`
| 提供滚动到
`$location.hash()`
中指定的页面锚点的功能 |
|
`$animate`
| 该服务公开了一系列 DOM
实用程序
方法,这些方法提供对动画挂钩的支持。 |
|
`$animate`
| 该服务公开了一系列 DOM
工具
方法,这些方法提供对动画挂钩的支持。 |
|
`$animateCss`
| 默认情况下,仅当包含
`ngAnimate`
时,此服务才会执行动画。 |
|
`$cacheFactory`
| 构造 Cache 对象,放置和检索键值对并为其提供对其他服务的访问权限的工厂。 |
|
`$templateCache`
| 首次使用模板时,会将其加载到模板缓存中以便快速检索。 |
...
...
docs/misc/273.md
浏览文件 @
ff078aab
...
...
@@ -68,7 +68,7 @@ Android bin folder content
.apk 文件是一个 ZIP 存档,其中包含.dex 文件,资源的编译版本,任何未编译的资源(例如,放入 res / raw /的资源)和
`AndroidManifest.xml`
文件。
如果您构建应用的调试版本-您将
`DemoApp-debug.apk`
和
`DemoApp-debug-aligned.apk`
作为 APK 的两个版本。 后者已使用
[
zipalign
实用程序
](
https://developer.android.com/tools/help/zipalign.html
"zipalign"
)
进行了优化,以使其运行更快。
如果您构建应用的调试版本-您将
`DemoApp-debug.apk`
和
`DemoApp-debug-aligned.apk`
作为 APK 的两个版本。 后者已使用
[
zipalign
工具
](
https://developer.android.com/tools/help/zipalign.html
"zipalign"
)
进行了优化,以使其运行更快。
这就是这篇小介绍性文章的全部内容,讨论了默认情况下每个 android 应用创建的各种文件和文件夹。 我们将在以后的教程中根据需要更深入地讨论它们。
...
...
docs/misc/277.md
浏览文件 @
ff078aab
...
...
@@ -93,7 +93,7 @@ MapReduce 论文解决的三个主要问题是并行化,分布和容错。 这
开源 Hadoop 由 Apache 软件基金会维护,网站位置为
[
http://hadoop.apache.org/
](
https://hadoop.apache.org/
)
。 当前的 Apache Hadoop 项目(版本 2.7)包括以下模块:
*
**Hadoop 通用**
:支持其他 Hadoop 模块的通用
实用程序
*
**Hadoop 通用**
:支持其他 Hadoop 模块的通用
工具
*
**Hadoop 分布式文件系统(HDFS)**
:提供对应用数据的高吞吐量访问的分布式文件系统
*
**Hadoop YARN:**
用于作业调度和集群资源管理的框架
*
**Hadoop MapReduce**
:基于 YARN 的系统,用于并行处理大型数据集
...
...
docs/misc/55.md
浏览文件 @
ff078aab
...
...
@@ -109,7 +109,7 @@ public class Log4jChangeWatcherService implements Runnable
## **2)添加`Log4jConfigurator`,这是您的应用与 log4j 一起使用的接口**
此类是一个
实用程序
类,它将 log4j 初始化代码和重载策略与应用代码分开。
此类是一个
工具
类,它将 log4j 初始化代码和重载策略与应用代码分开。
**`Log4jConfigurator.java`**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录