Skip to content

Commit

Permalink
fix: fix text not inline issue
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Apr 6, 2020
1 parent f6bf94f commit cf8e5d5
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 20 deletions.
2 changes: 1 addition & 1 deletion projects/ledge-render/src/lib/ledge-render.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ export class LedgeRenderComponent implements OnInit, AfterViewInit, OnChanges {
case 'paragraph':
return this.handleParaGraph(token);
case 'text':
return token.text;
return marked.inlineLexer(token.text, this.tokens.links);
case 'heading':
const inline = marked.inlineLexer(token.text, this.tokens.links);
this.markdownData.push({
Expand Down
42 changes: 23 additions & 19 deletions src/assets/docs/mobile-andorid.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@

## 测试

![测试金字塔,显示了应用的测试套件应包含的三类测试](https://developer.android.google.cn/images/training/testing/pyramid_2x.png "测试金字塔")
![测试金字塔,显示了应用的测试套件应包含的三类测试](https://developer.android.google.cn/images/training/testing/pyramid_2x.png '测试金字塔')

沿着金字塔逐级向上,从小型测试到大型测试,各类测试的保真度逐级提高,但维护和调试工作所需的执行时间和工作量也逐级增加。因此,您编写的单元测试应多于集成测试,集成测试应多于端到端测试。虽然各类测试的比例可能会因应用的用例不同而异,但我们通常建议各类测试所占比例如下:**小型测试占70%,中型测试占20%,大型测试占10%**
沿着金字塔逐级向上,从小型测试到大型测试,各类测试的保真度逐级提高,但维护和调试工作所需的执行时间和工作量也逐级增加。因此,您编写的单元测试应多于集成测试,集成测试应多于端到端测试。虽然各类测试的比例可能会因应用的用例不同而异,但我们通常建议各类测试所占比例如下:**小型测试占 70%,中型测试占 20%,大型测试占 10%**

### 单元测试(小型测试)

Expand All @@ -34,42 +34,43 @@

除此之外,测试代码应该具备最好的**可读性**和最少的**维护代价**,绝大多数情况下写测试应该就像用**领域特定语言描述一个事实**,甚至**不用经过仔细地思考**

本地单元测试
#### 本地单元测试

**当需要更快地运行测试而不需要与在真实设备上运行测试关联的保真度和置信度时,可以使用本地单元测试来验证应用的逻辑。**

- 如果测试对`Android`框架有依赖性(特别是与框架建立复杂交互的测试),则最好使用 `Robolectric`添加框架依赖项。

> 例:待测试的类同时依赖`Context`、`Intent`、`Bundle`、`Application`等`Android Framework`中的类时,此时我们可以引入`Robolectric`框架进行本地单元测试的编写。
> 例:待测试的类同时依赖`Context`、`Intent`、`Bundle`、`Application`等`Android Framework`中的类时,此时我们可以引入`Robolectric`框架进行本地单元测试的编写。

- 如果测试对`Android`框架的依赖性极小,或者如果测试仅取决于我们自己应用的对象,则可以使用诸如`Mockito`之类的模拟框架添加模拟依赖项。([BasicUnitAndroidTest](https://github.com/android/testing-samples/tree/master/unit/BasicUnitAndroidTest))

> 例:待测试的类只依赖`java api`(最理想的情况),此时对于待测试类所依赖的其他类我们就可以利用`Mockito`框架mock其依赖类,再进行当前类的单元测试编写。([EmailValidatorTest](https://github.com/android/testing-samples/blob/master/unit/BasicSample/app/src/test/java/com/example/android/testing/unittesting/BasicSample/EmailValidatorTest.java))
> 例:待测试的类除了依赖`java api`外仅依赖`Android Framework`中`Context`这个类,此时我们就可以利用`Mockito`框架`mock` `Context`类,再进行当前类的单元测试编写。([SharedPreferencesHelperTest](https://github.com/android/testing-samples/blob/master/unit/BasicSample/app/src/test/java/com/example/android/testing/unittesting/BasicSample/SharedPreferencesHelperTest.java))
> 例:待测试的类只依赖`java api`(最理想的情况),此时对于待测试类所依赖的其他类我们就可以利用`Mockito`框架mock其依赖类,再进行当前类的单元测试编写。([EmailValidatorTest](https://github.com/android/testing-samples/blob/master/unit/BasicSample/app/src/test/java/com/example/android/testing/unittesting/BasicSample/EmailValidatorTest.java))

> 例:待测试的类除了依赖`java api`外仅依赖`Android Framework`中`Context`这个类,此时我们就可以利用`Mockito`框架`mock` `Context`类,再进行当前类的单元测试编写。([SharedPreferencesHelperTest](https://github.com/android/testing-samples/blob/master/unit/BasicSample/app/src/test/java/com/example/android/testing/unittesting/BasicSample/SharedPreferencesHelperTest.java))

#### 设置测试环境

`Android Studio`项目中,本地单元测试的源文件存储在`module-name/src/test/java/`中。

在模块的顶级`build.gradle`文件中,将以下库指定为依赖项:

```
```groovy
dependencies {
// Required -- JUnit 4 framework
testImplementation "junit:junit:$junitVersion"
// Optional -- Mockito framework
testImplementation "org.mockito:mockito-core:$mockitoCoreVersion"
// Optional -- Robolectric environment
testImplementation "androidx.test:core:$xcoreVersion"
testImplementation "androidx.test.ext:junit:$extJunitVersion"
testImplementation "org.robolectric:robolectric:$robolectricVersion"
}
}
```
如果单元测试依赖于资源,需要在module的build.gradle文件中启用`includeAndroidResources`选项。然后,单元测试可以访问编译版本的资源,从而使测试更快速且更准确地运行。

```
如果单元测试依赖于资源,需要在 module 的 build.gradle 文件中启用`includeAndroidResources`选项。然后,单元测试可以访问编译版本的资源,从而使测试更快速且更准确地运行。

```groovy
android {
// ...
Expand All @@ -81,7 +82,7 @@
}
```

```
```java
@RunWith(AndroidJUnit4::class)
@Config(manifest = Config.NONE)
class PeopleDaoTest {
Expand All @@ -108,9 +109,9 @@ class PeopleDaoTest {
}
```

如果单元测试包含异步操作时,可以使用[awaitility库](https://github.com/awaitility/awaitility)进行测试;当使用[RxJava](https://github.com/ReactiveX/RxJava)响应式编程库时,可以自定义rule
如果单元测试包含异步操作时,可以使用 [awaitility 库](https://github.com/awaitility/awaitility)进行测试;当使用[RxJava](https://github.com/ReactiveX/RxJava)响应式编程库时,可以自定义 rule

```
```java
class RxJavaRule : TestWatcher() {
override fun starting(description: Description?) {
super.starting(description)
Expand Down Expand Up @@ -142,9 +143,10 @@ class RxJavaRule : TestWatcher() {
}
}
```

`TestScheduler`中`triggerActions`的使用。

```
```java
@RunWith(JUnit4::class)
class FilmViewModelTest {
@get:Rule
Expand Down Expand Up @@ -196,9 +198,10 @@ class FilmViewModelTest {
}
}
```

`TestSubscriber`的使用。

```
```java
@RunWith(JUnit4::class)
class WebServiceTest {
private lateinit var webService: WebService
Expand Down Expand Up @@ -265,9 +268,10 @@ class WebServiceTest {
插桩单元测试

### 集成测试(中型测试)

> 四大组件(ActivityServiceBroadcastReceiverContentProvider)测试

### UI测试(大型测试)
### UI 测试(大型测试)

- Espresso
- UIAutomator
Expand Down

0 comments on commit cf8e5d5

Please sign in to comment.