96SEO 2026-09-06 05:20 34
老实说,
作为 Android 开发者,你一定遇到过这些让人崩溃的 Robolectric 问题:
java @RunWith public class MainActivityTest { @Test public void clickButton_updatesText { // 需要创建完整 Activity 环境 MainActivity activity = Robolectric.buildActivity .create.start.resume.get;

// 操作 UI 元素
activity.findViewById.performClick;TextView tv = activity.findViewById;// 验证结果
assertEquals.toString);}
}
kotlin
// 不依赖任何 Android 框架
class MainViewModelTest {
@Test
fun `updateData refreshes list` = runTest {
val vm = MainViewModel
vm.updateData
assertEquals // 直接验证业务逻辑结果
}
}
优势:完全纯 JUnit 测试,运行速度快如普通单元测试,无依赖维护问题。
kotlin
@Testfun `click button shows updated text` = runTest { composeTestRule.setContent { MyScreen } composeTestRule.onNodeWithTag.performClick composeTestRule.onNodeWithTag.assertTextEquals}
优势:基于真实 UI 渲染引擎但无需设备支持,比 Robolectric 更接近真实场景。
注意!
| 旧方案 | 新方案 | |||
|---|---|---|---|---|
| Maintainability | Maintenance cost increases with Android version upgrades | Maintained effort minimal,mostly pure Java/Kotlin code |
"Robolectric 的存在意义正在被 Compose Testing + 更好的分层架构彻底替代"
Java Android 老项目迁移系列教程正在持续更新中...
+++++ source/_posts/markdown.md/hugo-markdown.md++++ title = "Hugo Markdown" date = "2021-06-09" draft = false
+++
Hugo uses library for markdown processing.
Markdown is supported inside HTML tags.
Code fences are easy:
`
import "fmt"
func main {
fmt.Println
}
`
Results:
Inline code is as easy as wrapping code with backticks .
Yes!Hugo processes shortcodes and markup inside code blocks.
Footnotes are easy too:
Here's some text with footnote.
+++++ source/_posts/前端工程化/CSS工具库风格规范.md++++
title = "CSS工具库风格规范"
date = "2021-06-09"
draft = false
// good ❤️🔥:
/*
This is a special case because...
*/
.selector {}
.selector {/.../}
/.../
.selector {}
// bad 💔:
.selector {/.../} /*
This is a special case because...
*/
// blockelement--modifiersubelement--submodifier 的简写形式为:
// .block__element--modifier ~subelement--submodifier .
// example:
// .menulink--active ~link-text--hovered .
.menulink--active .link-text:hover {
}
.menu__item-menu-submenu {
.buttontypebig{
.buttonstatusdisabled{
// BEM命名原则:
// block 块:顶级标签;独立性较强的部分,// element 元素:某个块内部相对独立的部分;按理说,// modifier 改变器/修饰符:某个块或元素状态、外观上的改变。
// 推荐使用“_”连接命名空间,“–”连接修饰符。//
.block-modifier {}
.block-element {}
.block-element-modifier {}
// good ❤️🔥:
.example {
display:none;color:#fff,font-family:"Helvetica Neue";}
每条声明都必须以分号。
// good ❤️🔥:
.example {
从width来看,10rem;height:auto,}
// bad 💔:
.example {
width这方面,10rem;height:auto // 没有分号!}
// bad 💔:
.example { width :10rem;height :auto;} // 在最终一个声明后添加分号。
URL取值尽量采用相对方法。因为绝对方法会降低网站的可移植性。
/* good ❤️🔥 */
img{
src这方面,url
}
/* bad 💔 */
img{
说到src。url
}
再看注意,
虽然从当前页面访问
假设你有一个博客文章页http://example.com/blog/article.html,它需要访问/images/image.jpg图片。按理说,
如果使用绝对方法
当我们把这个博客文章页做成静态文件放到CDN上的时候就不行了!比如CDN地址是cdn.example.com,
那么静态页面地址就是http://cdn.example.com/article.html了。此时还是用绝对方法url来访问图片的话就会返回404错误!
因为根据绝对方法会去http://cdn.example.com/images/image.jpg来寻找图片资源而图片资源是在http://example.com/images/image.jpg这里啊!按理说,
应该使用相对方法来引用url资源。不过,
相对于html文档所在位置来说../代表上一级目录。./代表当前目录,没有./或者../就默认代表当前目录。
其他一些小细节:
选择器中的属性和属性值之间使用英文冒号隔开;冒号后面不允许添加空格,
选择器和左大括弧之间允许保留一个空格;
左大括弧{和第一条样式声明之间换行;
多条样式声明之间换行;
最终一条样式声明和右大括弧之间换行;
右大括弧}后换行;html
Syntax Highlighting
Code Fences
markdown
go {.line-numbers}
package main
Inline Code
Shortcodes and Markup Inside Code Blocks?
Footnotes
注释规范
文件头部注释必须以 /* 开头 */。内容必须包含以下信息:
/*
* @Author: your name
* @Date: yyyy-mm-dd hh:mm:ss -- 新增文件时添加注释日期和作者信息。* @LastEditTime:
* @LastEditors:
* @Description:
* @FilePath:
*/
注释方式统一使用 /* ... */
注释写在需要说明的代码段上面。
命名规范
全局css类命名遵循BEM命名规则:
引号规范
属性值如果是属性名也可以不用引号。属性值如果是颜色、ID、类选择器可以不用引号。属性值如果有空格一定要用双引号括起来。
分号规范
URL引用方式
/images/image.jpg图片没有问题,但是将页面静态化之后就有问题了!url来引用这个图片的话是可以成功访问这个图片资源的。
其他
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback