$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A New Testing Framework Rgot
Search
ksss
December 12, 2015
Programming
0
1.3k
A New Testing Framework Rgot
Speech of RubyKaigi2015 LT
ksss
December 12, 2015
Tweet
Share
More Decks by ksss
See All by ksss
RaaP
ksss
0
680
Railsの型ファイル自動生成における課題と解決
ksss
4
5k
RBS generation framework using Rack architecture
ksss
1
7.6k
mrubyでruby/specを走らせてみた結果www
ksss
1
2.5k
Rubyに型があると便利か
ksss
4
4.7k
mruby hacking guide
ksss
7
2k
Other Decks in Programming
See All in Programming
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
470
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
38
26k
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
230
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
240
Github Copilotのチャット履歴ビューワーを作りました~WPF、dotnet10もあるよ~ #clrh111
katsuyuzu
0
110
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
320
How Software Deployment tools have changed in the past 20 years
geshan
0
29k
React Native New Architecture 移行実践報告
taminif
1
150
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
390
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
130
AIコーディングエージェント(Gemini)
kondai24
0
210
TestingOsaka6_Ozono
o3
0
150
Featured
See All Featured
BBQ
matthewcrist
89
9.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Automating Front-end Workflow
addyosmani
1371
200k
Why Our Code Smells
bkeepers
PRO
340
57k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
GitHub's CSS Performance
jonrohan
1032
470k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Unsuck your backbone
ammeep
671
58k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Transcript
A New Testing Framework Rgot ksss RubyKaigi2015
! " ksss _ksss_
None
A New Testing Framework was born …
Rgot Ruby + Golang Testing ksss/rgot !
$ gem i rgot ksss/rgot ! ruby 2.0 ʙ
!? ksss/rgot !
Again? ksss/rgot !
Do We Have to Learning New Things? ksss/rgot !
Rgot is Translation from Golang Testing to Ruby ksss/rgot !
Incidentally You Can Learn Golang Testing! ksss/rgot !
Golang ksss/rgot ! package foo_test func TestFooBar(t *testing.T) { if
3 != (1 + 2) { t.Error("failed") } }
Rgot ksss/rgot ! module FooTest def test_foo(t) if 3 !=
(1 + 2) t.error("failed") end end end
Golang-ish ksss/rgot !
Golang ksss/rgot ! $ go test -v === RUN TestFoo
--- PASS: TestFoo (1.01s) === RUN TestBar --- PASS: TestBar (1.00s) === RUN TestBaz --- PASS: TestBaz (1.01s) PASS ok ksss/gotest 3.017s
Rgot ksss/rgot ! $ rgot -v === RUN test_foo ---
PASS: test_foo (1.01s) === RUN test_bar --- PASS: test_bar (1.00s) === RUN test_baz --- PASS: test_baz (1.01s) PASS ok RgotTest 3.042s
Golang ksss/rgot ! package foo_test func BenchmarkQux(b *testing.B) { for
i := 0; i < b.N; i++ { foo.Qux() } }
Rgot ksss/rgot ! module FooTest def benchmark_qux(b) i = 0
while i < b.n Foo.qux i += 1 end end end
Golang ksss/rgot ! package pow_test func BenchmarkPow(b *testing.B) { b.RunParallel(func(pb
*testing.PB) { for pb.Next() { math.Pow(1000.0, 1000.0) } }) }
Rgot ksss/rgot ! module PowTest def benchmark_pow(b) b.run_parallel do |pb|
while pb.next 1000.0 ** 1000.0 end end end end
Golang ksss/rgot ! $ go test -bench . -cpu 2,4
PASS BenchmarkPow-2 100000000 22.3 ns/op BenchmarkPow-4 100000000 12.5 ns/op ok github.com/pow_test 3.522s GOMAXPROCS
Rgot ksss/rgot ! $ rgot --bench . --cpu 2,4 --thread
2,4 PASS benchmark_pow-2(2) 25600000 74 ns/op benchmark_pow-2(4) 81920000 74 ns/op benchmark_pow-4(2) 81920000 39 ns/op benchmark_pow-4(4) 40960000 40 ns/op ok PowTest 13.603s process thread
Golang ksss/rgot ! package foo_test func ExampleFoo { fmt.Println(foo.Say()) //
Output: // foo }
Rgot ksss/rgot ! module FooTest def example_foo puts Foo.say #
Output: # foo end end
Golang ksss/rgot ! $ go test -v === RUN ExampleFoo
--- FAIL: ExampleFoo (0.00s) got: bar want: foo FAIL exit status 1 FAILgithub.com/ksss/gotest 0.005s
Rgot ksss/rgot ! $ rgot -v === RUN example_foo ---
FAIL: example_foo (0.00s) got: bar want: foo FAIL exit status 1 FAILRgotTest 0.001s
Thinking ksss/rgot !
Diversity ksss/rgot !
Testing before Benchmark ksss/rgot !
Testable Sample Code ksss/rgot !
Not Need /test or /spec Dir ksss/rgot !
ksss/rgot !
Short Class Name testing.M => Rgot::M testing.T => Rgot::T testing.B
=> Rgot::B ksss/rgot !
Zero Assert ksss/rgot !
t.error() ksss/rgot !
More Thinking ksss/rgot !
Assert Oriented v.s. Error log Oriented ksss/rgot !
Assert Oriented case ksss/rgot ! mimitest, test-unit, rspec, etc…
case ksss/rgot ! Error log Oriented
Error Report is Important ksss/rgot !
Precise errors are particularly important when the programmer seeing the
errors is not familiar with the code. #https://golang.org/doc/faq#assertions ksss/rgot !
Words ksss/rgot !
Words - assert - should - expect - must minitest,
test-unit, rspec, … ksss/rgot !
Words - want - got - failed - invalid Golang
testing package ksss/rgot !
Words (hypothesis) minitest, test_unit, rspec,… Golang testing package Hard Soft
ksss/rgot !
ksss/rgot !