Forwarded from duangsuse Throws
#SB #jvbao #GitHub https://github.com/fuck-xuexiqiangguo/Fuck-XueXiQiangGuo/issues/119
👍 猴先生真是犯二个不停,不仅自己举报个违法翻墙,差点顺带把我给迫害了
👍 猴先生真是犯二个不停,不仅自己举报个违法翻墙,差点顺带把我给迫害了
GitHub
哪位大佬帮 jvbaocn 出个道? · Issue #119 · fuck-xuexiqiangguo/Fuck-XueXiQiangGuo
这人反社会还反上瘾了,有没有恶俗圈的大佬来教他做人? 另外,这个杂种已经在 starrers 的 repo 下发 issue 威胁了,可以举报给 GitHub 了。
Forwarded from dnaugsuz
不是没有道理,我最近打算对于一些比较完整的东西可以拿 TeX 排出来(对于有数学公式或者 tikz 图的那些)或者拿 HTML 写,这样可以顺便练习一下排版能力。
Forwarded from 羽毛的小白板
Forwarded from 羽毛的小白板
看了下 Android 的 SparseArray 的实现,似乎和 .Net 的 SortedList<K, V> 没什么区别
🤔 这个星期本来有很多事情需要讲的(主要是技术,而且我想说我要用 imperative 的 Kotlin 写个 BCE 程序,顺便学学写我的第一个矩阵等式求解算法)
可是呢,duangsuse 的身体目前比较糟糕,所以为了健康还是必须 11 点下机的。
但愿一切都好吧。 #life #tech #dev #backend #algorithm
可是呢,duangsuse 的身体目前比较糟糕,所以为了健康还是必须 11 点下机的。
但愿一切都好吧。 #life #tech #dev #backend #algorithm
#GitHUb #Kotlin #issue https://github.com/icela/FriceEngine/issues/83
(当然冰封现在早就不搞这种事情『计算机图形上的封装』了...)
org.frice.anim.scale.SimpleScale 类中的 obj.scale(deltaTime * x, deltaTime * x) 这句后面应该是y吧?写错了。虽然 Frice 的项目持续集成构建和测试都有做(
(当然冰封现在早就不搞这种事情『计算机图形上的封装』了...)
GitHub
代码问题 · Issue #83 · icela/FriceEngine
org.frice.anim.scale.SimpleScale 类中的 obj.scale(deltaTime * x, deltaTime * x) 这句后面应该是y吧?
This media is not supported in your browser
VIEW IN TELEGRAM
#Java #Ruby #Kotlin #Test #Dev
https://docs.cucumber.io/guides/10-minute-tutorial/
一个『类似自然语言』的 Specification Tests 框架:
快速学习一下如何来使用它!(本频道一直引以为豪的是,在其他频道只『给个链接、点个 Star』的时候,本频道会给予大家快速上手讲解)
以下示例基于 Java 8(实际上 Java 1.1 都可以用)
首先,你的直觉要并入这些,以便快速地理解使用方式:
1. 所谓『功能性』软件测试(Behavior-Driven Tests),是因为要确定软件的『某一项功能』是否能正常如预期地工作
此外,还流行以下测试侧面方案:完整验收测试 / (就测试层面而言)黑盒白盒测试 / 兼容性和性能(弹性... 负载... 压力)测试 / 回归测试(验证修复方案是否能用) / Smoke (快速的简单完整功能测试)
2. 这种测试是这样的,你们看看(主要是因为很多人对功能性测试和洋文的直觉不好,我翻译一下):
Feature: Users can change their avatar
We expect that normal users CAN change their avatar
Scenario: The user is normal user
Given a normal user
When he wants to update his avatar
Then he will able to update his avatar
Scenario: The user is blocked
Given a banned user
When he wants to update his avatar
Then he will not able to update his avatar
类似的测试可能还有很多,比如,被封禁的用户不能更改自己的用户名、不能发布评论...
设想一下,如果我们有这样的软件需要测试,那么,有一种 DSL 来帮助我们把测试写得更好,更具备可读性和可维护性,减少余赘代码,岂不美栽? 🤔
这门 DSL 叫做 Cucumber. (准确的说,叫 Gherkin,它只是 Cucumber 测试框架的一部分)
至于包管理什么的杂七杂八的内容,你们知道那是码农的工作,我们不用管(待会『三声,上声』会『四声,去声』讲)
我们来看看上面的例子该怎么写(伪代码,不准喷不是函数式,函数式什么的我会独立讲,再说工程第一是吧)
import cucumber.api.java.en.Given;
import cucumber.api.java.en.When;
import cucumber.api.java.en.Then;
import static org.junit.Assert.*;
mvn archetype:generate 记好了,这些参数
1. archtype 的 Group、ArtifactId、Version
2. 你项目的 Group、AId、Version
3.
以上参数全都是 camelCased 的,风格为 Java 的单 dash(-) 前缀。
(相关知识: Maven Coordinate:
记住,G:A:V 就可以吊打很多连 Maven 是啥,用的啥模型都不知道的 Android Dev 了(跑,但这的确是事实,因为实际上 Android 主要还是和 Android API 和 XML / 组件/View 模型什么的杠,有些入门萌新连 Gradle/Groovy/Maven 到底是做什么的都不知道,也不知道 Dependency Scope、Artifact、Tasks 之类的东西,2333333)。
然后在项目目录里
上面的 Feature/Scenario/Given/When/Then 语法结构,可以在项目的 Test Resource 下的指定 Java 包里创建,一般放在
而 Tests 的代码,就放在同一个 Java 包的
== 搞基一点: 使用 DSL 指定输入数据
别用 Scenario 了。用 Scenario Outline
Scenario Outline:
Given Arithmetic expression "<expr>"
When I asked the result
Then It should be "<answer>"
Examples:
| 1+1 | 2
| 0*9 | 0
| 0+3 | 3
其他的 matching 上面讲过了,不说了。
我觉得还不错。 +1
剩下的更高端一点的内容呢,我没时间看,算了,给个语法结构目录就跑。
至于中文支持呢,有,这里可以看到,不过具体是怎么实现的呢(我不说最无聊的句构解析器部分,因为的确很无聊)?其实 Runtime 会根据对应平台的 Code Snippet 自己生成相应的实际 API 类编译加载,不过 IDE 用的包我不清楚是哪里生成的,找了很久,没时间管这些。
== FIX: 找了很久我没看到他们用 sun 的 javac API,我又看了一会才知道,这整个就是一代码生成器程序...
https://docs.cucumber.io/guides/10-minute-tutorial/
一个『类似自然语言』的 Specification Tests 框架:
快速学习一下如何来使用它!(本频道一直引以为豪的是,在其他频道只『给个链接、点个 Star』的时候,本频道会给予大家快速上手讲解)
以下示例基于 Java 8(实际上 Java 1.1 都可以用)
首先,你的直觉要并入这些,以便快速地理解使用方式:
1. 所谓『功能性』软件测试(Behavior-Driven Tests),是因为要确定软件的『某一项功能』是否能正常如预期地工作
此外,还流行以下测试侧面方案:完整验收测试 / (就测试层面而言)黑盒白盒测试 / 兼容性和性能(弹性... 负载... 压力)测试 / 回归测试(验证修复方案是否能用) / Smoke (快速的简单完整功能测试)
2. 这种测试是这样的,你们看看(主要是因为很多人对功能性测试和洋文的直觉不好,我翻译一下):
特性: 更改头像
“我们的用户可以上传自定义头像以取代默认头像”
场景: 普通用户可以更改自己的头像
情况: 这个用户是普通用户
当: 他想更新自己的头像时
那么: 他应该能够成功更新自己的头像
场景: 被我们 Block 的用户不能更改自己的头像
情况: 这个用户是封禁用户
当: 他想更新自己的头像时
那么: 他应该无法成功更新自己的头像
或者说:Feature: Users can change their avatar
We expect that normal users CAN change their avatar
Scenario: The user is normal user
Given a normal user
When he wants to update his avatar
Then he will able to update his avatar
Scenario: The user is blocked
Given a banned user
When he wants to update his avatar
Then he will not able to update his avatar
类似的测试可能还有很多,比如,被封禁的用户不能更改自己的用户名、不能发布评论...
设想一下,如果我们有这样的软件需要测试,那么,有一种 DSL 来帮助我们把测试写得更好,更具备可读性和可维护性,减少余赘代码,岂不美栽? 🤔
这门 DSL 叫做 Cucumber. (准确的说,叫 Gherkin,它只是 Cucumber 测试框架的一部分)
至于包管理什么的杂七杂八的内容,你们知道那是码农的工作,我们不用管(待会『三声,上声』会『四声,去声』讲)
我们来看看上面的例子该怎么写(伪代码,不准喷不是函数式,函数式什么的我会独立讲,再说工程第一是吧)
import cucumber.api.java.en.Given;
import cucumber.api.java.en.When;
import cucumber.api.java.en.Then;
import static org.junit.Assert.*;
public class Stepdefs:
boolean blocked = false;
Exception gotException;
@Given("a normal user")
fun givenNormalUser() = Unit
@Given("a banned user")
fun givenBannedUser() = { blocked = true }
@When("he wants to update his avatar")
fun askedUpdateAvatar() {
try { UserResource.updateAvatar(UserResource.findUser { it.banned == blocked }.first, Avatar.fromURL("https://example.org/a.png")) }
catch (SecurityException e) { gotException = e }
}
@Then("^he will (.*) to update his avatar$")
fun itChecksUserPermission(String desc) {
when (desc) {
"able" -> assertNull(gotException)
"not able" -> assertNotNull(gotException)
}
}
下面是无聊的码农内容,就是包管理的,虽然这种东西比较 trivial 本身也是码农内容(跑)mvn archetype:generate 记好了,这些参数
1. archtype 的 Group、ArtifactId、Version
2. 你项目的 Group、AId、Version
3.
-DinteractiveMode=false 全自动生成以上参数全都是 camelCased 的,风格为 Java 的单 dash(-) 前缀。
(相关知识: Maven Coordinate:
Group:ArtifactId:[packaging[:classifier]]:Version)记住,G:A:V 就可以吊打很多连 Maven 是啥,用的啥模型都不知道的 Android Dev 了(跑,但这的确是事实,因为实际上 Android 主要还是和 Android API 和 XML / 组件/View 模型什么的杠,有些入门萌新连 Gradle/Groovy/Maven 到底是做什么的都不知道,也不知道 Dependency Scope、Artifact、Tasks 之类的东西,2333333)。
然后在项目目录里
mvn test 就可以运行测试。上面的 Feature/Scenario/Given/When/Then 语法结构,可以在项目的 Test Resource 下的指定 Java 包里创建,一般放在
src/test/resource/<package>/ 里,必须以 .feature 为后缀名,前缀名随便而 Tests 的代码,就放在同一个 Java 包的
Stepdefs.java 类里,然后代码上面那样写。== 搞基一点: 使用 DSL 指定输入数据
别用 Scenario 了。用 Scenario Outline
Scenario Outline:
Given Arithmetic expression "<expr>"
When I asked the result
Then It should be "<answer>"
Examples:
| 1+1 | 2
| 0*9 | 0
| 0+3 | 3
其他的 matching 上面讲过了,不说了。
我觉得还不错。 +1
剩下的更高端一点的内容呢,我没时间看,算了,给个语法结构目录就跑。
至于中文支持呢,有,这里可以看到,不过具体是怎么实现的呢(我不说最无聊的句构解析器部分,因为的确很无聊)?其实 Runtime 会根据对应平台的 Code Snippet 自己生成相应的实际 API 类编译加载,不过 IDE 用的包我不清楚是哪里生成的,找了很久,没时间管这些。
== FIX: 找了很久我没看到他们用 sun 的 javac API,我又看了一会才知道,这整个就是一代码生成器程序...
cucumber.io
Cucumber is a tool for running automated acceptance tests, written in plain language. Because they're written in plain language, they can be read by anyone on your team, improving communication, collaboration and trust.