my_help 0.4.3 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/Gemfile +1 -0
- data/README.md +1 -1
- data/Rakefile +35 -12
- data/exe/{todo_help → my_todo} +1 -1
- data/hikis/diff_against_org-mode.hiki +34 -0
- data/hikis/tmp.org +20 -0
- data/lib/.emacs_help.rb.swp +0 -0
- data/lib/daddygongon/my_todo.yml +31 -0
- data/lib/emacs_help.rb +15 -0
- data/lib/emacs_help.rb~ +137 -0
- data/lib/my_help/test.rb +3 -0
- data/lib/my_help/version.rb +1 -1
- data/lib/my_help.rb +1 -1
- data/lib/my_todo/my_todo.rb +7 -0
- data/lib/my_todo/my_todo.rb~ +7 -0
- data/lib/specific_help.rb +42 -11
- data/lib/specific_help.rb~ +193 -0
- data/lib/todo.rb +1 -0
- data/lib/todo.rb~ +1 -0
- data/lor +0 -0
- data/my_help.gemspec +4 -2
- data/my_help.wiki/Home.md +1 -1
- data/my_help.wiki/README_ja.md +1 -1
- data/my_help_nasu/.DS_Store +0 -0
- data/my_help_nasu/.gitignore +1 -0
- data/my_help_nasu/Rakefile +422 -0
- data/my_help_nasu/code.hiki +285 -0
- data/my_help_nasu/consideration.hiki +8 -0
- data/my_help_nasu/features.hiki +185 -0
- data/my_help_nasu/figs/my_help_nasu.001.jpeg +0 -0
- data/my_help_nasu/figs/my_help_nasu.001.jpg +0 -0
- data/my_help_nasu/figs/my_help_nasu1.001.jpg +0 -0
- data/my_help_nasu/head2.tex +9 -0
- data/my_help_nasu/hiki_help.yml +53 -0
- data/my_help_nasu/introduction.hiki +29 -0
- data/my_help_nasu/key_bind_mi +1 -0
- data/my_help_nasu/latex_dir/.gitignore +1 -0
- data/my_help_nasu/latex_dir/Rakefile +420 -0
- data/my_help_nasu/latex_dir/code.aux +25 -0
- data/my_help_nasu/latex_dir/code.tex +271 -0
- data/my_help_nasu/latex_dir/consideration.aux +22 -0
- data/my_help_nasu/latex_dir/consideration.tex +9 -0
- data/my_help_nasu/latex_dir/features.aux +31 -0
- data/my_help_nasu/latex_dir/features.tex +173 -0
- data/my_help_nasu/latex_dir/head.tex +9 -0
- data/my_help_nasu/latex_dir/hiki_help.yml +53 -0
- data/my_help_nasu/latex_dir/introduction.aux +22 -0
- data/my_help_nasu/latex_dir/introduction.tex +23 -0
- data/my_help_nasu/latex_dir/jlisting.sty +216 -0
- data/my_help_nasu/latex_dir/jlisting.tex +216 -0
- data/my_help_nasu/latex_dir/latex_dir/head.tex +9 -0
- data/my_help_nasu/latex_dir/latex_dir/jlisting.tex +216 -0
- data/my_help_nasu/latex_dir/latex_dir/pre.tex +36 -0
- data/my_help_nasu/latex_dir/method_bdd.aux +26 -0
- data/my_help_nasu/latex_dir/method_bdd.tex +28 -0
- data/my_help_nasu/latex_dir/method_cucumber.aux +28 -0
- data/my_help_nasu/latex_dir/method_cucumber.log +28 -0
- data/my_help_nasu/latex_dir/method_cucumber.tex +205 -0
- data/my_help_nasu/latex_dir/method_usage.aux +28 -0
- data/my_help_nasu/latex_dir/method_usage.tex +76 -0
- data/my_help_nasu/latex_dir/my_help_nasu.aux +12 -0
- data/my_help_nasu/latex_dir/my_help_nasu.log +328 -0
- data/my_help_nasu/latex_dir/my_help_nasu.pdf +0 -0
- data/my_help_nasu/latex_dir/my_help_nasu.synctex.gz +0 -0
- data/my_help_nasu/latex_dir/my_help_nasu.tex +74 -0
- data/my_help_nasu/latex_dir/my_help_nasu.toc +32 -0
- data/my_help_nasu/latex_dir/overview.aux +21 -0
- data/my_help_nasu/latex_dir/overview.tex +12 -0
- data/my_help_nasu/latex_dir/pre.tex +36 -0
- data/my_help_nasu/method_bdd.hiki +24 -0
- data/my_help_nasu/method_cucumber.hiki +184 -0
- data/my_help_nasu/method_usage.hiki +69 -0
- data/my_help_nasu/my_help_nasu/.DS_Store +0 -0
- data/my_help_nasu/my_help_nasu/my_help_nasu.001.jpeg +0 -0
- data/my_help_nasu/my_help_nasu.hiki +32 -0
- data/my_help_nasu/my_help_nasu.key +0 -0
- data/my_help_nasu/overview.hiki +11 -0
- data/tmp.txt +2 -0
- metadata +104 -10
- data/lib/daddygongon/git_help.yml +0 -30
- data/lib/daddygongon/todo_help.yml +0 -58
@@ -0,0 +1,26 @@
|
|
1
|
+
\relax
|
2
|
+
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}RSpecとBDDについて}{7}}
|
3
|
+
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces RSpecとCucumberのRed-Green-Refactoringサイクル間の関係.}}{8}}
|
4
|
+
\newlabel{default}{{1}{8}}
|
5
|
+
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces RSpecとCucumberの手順.}}{8}}
|
6
|
+
\newlabel{default}{{2}{8}}
|
7
|
+
\@setckpt{method_bdd}{
|
8
|
+
\setcounter{page}{10}
|
9
|
+
\setcounter{equation}{0}
|
10
|
+
\setcounter{enumi}{0}
|
11
|
+
\setcounter{enumii}{0}
|
12
|
+
\setcounter{enumiii}{0}
|
13
|
+
\setcounter{enumiv}{0}
|
14
|
+
\setcounter{footnote}{0}
|
15
|
+
\setcounter{mpfootnote}{0}
|
16
|
+
\setcounter{part}{0}
|
17
|
+
\setcounter{section}{2}
|
18
|
+
\setcounter{subsection}{1}
|
19
|
+
\setcounter{subsubsection}{0}
|
20
|
+
\setcounter{paragraph}{0}
|
21
|
+
\setcounter{subparagraph}{0}
|
22
|
+
\setcounter{figure}{2}
|
23
|
+
\setcounter{table}{0}
|
24
|
+
\setcounter{lstnumber}{1}
|
25
|
+
\setcounter{lstlisting}{0}
|
26
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
\subsection{RSpecとBDDについて}
|
3
|
+
ビヘイビア駆動開発(Behaviour-Driven Development : BDD)は,テスト駆動開発(Test-Driven Development : TDD)の工程への理解を深め,それをうまく説明しようとして始まりました.TDDの持つ単語のイメージが構造のテストを中心とするべしというのに対して,BDDはソフトの振る舞いに中心をおきなさいという意図があります.この違いが,初めに考えるべきテストの性質を変化させ,構造ではなく振る舞いを中心にテストを構築するという意識をもたせてくれます.
|
4
|
+
|
5
|
+
さらに,ソフトの中で,オブジェクト同士がコミュニケーションをとるように,実世界において開発チームやテストチーム,あるいはドキュメントチーム間のコミュニケーションの取り方をシステムで提供しようというのがBDDのフレームワークです.CucumberとRSpecはこれを実現する一つのシステムとして提供されています.
|
6
|
+
|
7
|
+
RSpecとCucumberの関係を図に示しました.これは,RSpec本から書き写した図です[1, pp.9].RSpecでテストを書くと一つ一つのfunctionあるいはmethodレベルでRed, Green, Refactoringを行うべしという意図があります.一方で,もっと大きな枠組み,つまりシステムレベルでもこれらのステップは必要です.ところが,それをRSpecで書くのには無理があります.このレベルのテスト記述をしやすくするのが,Cucumberです.そこでもRed, Green, Refactoringが必要で,そこでサイクルが回ることを意図しています.
|
8
|
+
|
9
|
+
\begin{figure}[htbp]\begin{center}
|
10
|
+
\includegraphics[width=10cm,bb= 0 0 737 453]{../figs/./my_help_nasu.001.jpg}
|
11
|
+
\caption{RSpecとCucumberのRed-Green-Refactoringサイクル間の関係.}
|
12
|
+
\label{default}\end{center}\end{figure}
|
13
|
+
BDDの基本的な考え方は次の通りまとめられています.
|
14
|
+
|
15
|
+
\begin{quotation}
|
16
|
+
BDDの目的は,ソフトウェアが使われる状況を説明するための言語を単純化することで,ソフトウェア開発チームのコミュニケーションを後押しすることです.つまり,あるコンテキストで(Given),あるイベントが発生すると(When),ある結果が期待されます(Then).BDDにおけるGiven, When, Thenの3つの単語は,アプリケーションやオブジェクトを,それらの振る舞いに関係なく表現するために使われる単純な単語です.ビジネスアナリスト,テスト担当者,開発者は皆,それらをすぐに理解します.これらの単語はCucumberの言語に直接埋め込まれています[1, pp.3-6].
|
17
|
+
|
18
|
+
\end{quotation}
|
19
|
+
手順を書き直すと次の通りです.
|
20
|
+
|
21
|
+
\begin{figure}[htbp]\begin{center}
|
22
|
+
\includegraphics[width=10cm,bb= 0 0 737 453]{../figs/./my_help_nasu1.001.jpg}
|
23
|
+
\caption{RSpecとCucumberの手順.}
|
24
|
+
\label{default}\end{center}\end{figure}
|
25
|
+
まずCucumberで一つのシナリオに焦点を当てて,その振る舞いを記述するfeatureを書きます.一つずつつぶしていくのがこつです.一つのfeatureが書けたら、次に,それぞれfeatureを実現するステップに分けて仕様を決めて行きます.これはTDDのred green refactoringの前に行う作業,「仕様をきめる」に対応しています.このプロセスが終了したら,RSpecに行きます.
|
26
|
+
RSpecでは実際にテストコードを書き,ここでもred, green, refactoringを行います.
|
27
|
+
RSpecが成功したら,Cucumberのrefactoringを行います.
|
28
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
\relax
|
2
|
+
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Cucumberについて}{10}}
|
3
|
+
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.1}概要}{10}}
|
4
|
+
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.2}features}{10}}
|
5
|
+
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.3}Cucumber,RSpecインストール}{11}}
|
6
|
+
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces }}{12}}
|
7
|
+
\newlabel{default}{{1}{12}}
|
8
|
+
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.4}ディレクトリー構造と使用手順}{12}}
|
9
|
+
\@setckpt{method_cucumber}{
|
10
|
+
\setcounter{page}{15}
|
11
|
+
\setcounter{equation}{0}
|
12
|
+
\setcounter{enumi}{2}
|
13
|
+
\setcounter{enumii}{0}
|
14
|
+
\setcounter{enumiii}{0}
|
15
|
+
\setcounter{enumiv}{0}
|
16
|
+
\setcounter{footnote}{0}
|
17
|
+
\setcounter{mpfootnote}{0}
|
18
|
+
\setcounter{part}{0}
|
19
|
+
\setcounter{section}{2}
|
20
|
+
\setcounter{subsection}{2}
|
21
|
+
\setcounter{subsubsection}{4}
|
22
|
+
\setcounter{paragraph}{0}
|
23
|
+
\setcounter{subparagraph}{0}
|
24
|
+
\setcounter{figure}{2}
|
25
|
+
\setcounter{table}{1}
|
26
|
+
\setcounter{lstnumber}{17}
|
27
|
+
\setcounter{lstlisting}{0}
|
28
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.1.26) 8 FEB 2017 06:33
|
2
|
+
entering extended mode
|
3
|
+
restricted \write18 enabled.
|
4
|
+
file:line:error style messages enabled.
|
5
|
+
%&-line parsing enabled.
|
6
|
+
**method_cucumber.tex
|
7
|
+
(./method_cucumber.tex
|
8
|
+
pLaTeX2e <2016/11/29> (based on LaTeX2e <2017/01/01>)
|
9
|
+
Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
|
10
|
+
./method_cucumber.tex:2: Undefined control sequence.
|
11
|
+
l.2 \subsection
|
12
|
+
{Cucumberについて}
|
13
|
+
?
|
14
|
+
./method_cucumber.tex:2: Emergency stop.
|
15
|
+
l.2 \subsection
|
16
|
+
{Cucumberについて}
|
17
|
+
End of file on the terminal!
|
18
|
+
|
19
|
+
|
20
|
+
Here is how much of TeX's memory you used:
|
21
|
+
4 strings out of 493683
|
22
|
+
74 string characters out of 6149653
|
23
|
+
53892 words of memory out of 5000000
|
24
|
+
3671 multiletter control sequences out of 15000+600000
|
25
|
+
7511 words of font info for 31 fonts, out of 8000000 for 9000
|
26
|
+
929 hyphenation exceptions out of 8191
|
27
|
+
5i,0n,3p,51b,8s stack positions out of 5000i,500n,10000p,200000b,80000s
|
28
|
+
No pages of output.
|
@@ -0,0 +1,205 @@
|
|
1
|
+
|
2
|
+
\subsection{Cucumberについて}
|
3
|
+
\subsubsection{概要}
|
4
|
+
Cucumberが提供するBDDの内容をまとめると
|
5
|
+
|
6
|
+
\begin{quotation}
|
7
|
+
BDDはフルスタックのアジャイル開発技法です.BDDはATDP(Acceptance Test-Driven Planning)と呼ばれるAcceptance TDDの一種を含め,エクストリームプログラミングからヒントを得ています.ATDPでは,顧客受け入れテストを導入し,それを主体にコードの開発を進めて行きます.それらは顧客と開発チームによる共同作業の結果であることが理想的です.開発チームによってテストが書かれた後,顧客がレビューと承認を行うこともあります.いずれにしても,それらのテストは顧客と向き合うものなので,顧客が理解できる言語とフォーマットで表現されていなければなりません.Cucumberを利用すれば,そのための言語とフォーマットを手に入れることができます.Cucumberは,アプリケーションの機能とサンプルシナリオを説明するテキストを読み取り,そのシナリオの手順に従って開発中のコードとのやり取りを自動化します[1, 7pp.].
|
8
|
+
|
9
|
+
\end{quotation}
|
10
|
+
と記されている.
|
11
|
+
|
12
|
+
\subsubsection{features}
|
13
|
+
Cucumberでは先の引用にある通り、振る舞いをシナリオとしてまず記述します.
|
14
|
+
次に,英語のfeaturesのひな形を示します.
|
15
|
+
\begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
|
16
|
+
% cat ./featrues/sample_e.feature
|
17
|
+
Feature: Description of feature
|
18
|
+
|
19
|
+
Scenario: Description of scenario
|
20
|
+
Given I want to explain scenario
|
21
|
+
Then I investigate
|
22
|
+
When I know the meaning
|
23
|
+
\end{lstlisting}
|
24
|
+
ファイルの先頭で,
|
25
|
+
\begin{quote}\begin{verbatim}
|
26
|
+
# language: ja
|
27
|
+
\end{verbatim}\end{quote}
|
28
|
+
と記すと日本語でのkeywordが認識されます.下記にmy\_todoに対するfeaturesファイルの具体例を示します.
|
29
|
+
\begin{lstlisting}[style=customCsh,basicstyle={\scriptsize\ttfamily}]
|
30
|
+
# language: ja
|
31
|
+
|
32
|
+
機能: todoの更新を行う
|
33
|
+
todoは更新していくものであり,新しく書いたり終わったものを消したいので
|
34
|
+
バックアップをとって,過去のtodoを残しておく
|
35
|
+
|
36
|
+
シナリオ: コマンドを入力してtodoを更新していく
|
37
|
+
前提 todoを編集したい
|
38
|
+
もし "my_todo --edit"と入力する
|
39
|
+
ならば editが開かれる
|
40
|
+
かつ 自分のtodoを書き込む
|
41
|
+
|
42
|
+
シナリオ: コマンドを入力してバックアップをとる
|
43
|
+
前提 todoの編集が終わった
|
44
|
+
もし "my_todo --store [item]"と入力する
|
45
|
+
ならば itemのバックアップを取る
|
46
|
+
\end{lstlisting}
|
47
|
+
このようにFeature, Scenario, Given, Then, Whenなどのcucumberが解釈する大文字で始まる
|
48
|
+
keywordsに対して,それぞれ機能,シナリオ,前提,もし,ならばなどの単語があてられています.
|
49
|
+
この機能により,より自然な日本語でfeaturesを書くことができ,
|
50
|
+
顧客にもわかりやすく,開発者も書きやすくなっています。
|
51
|
+
|
52
|
+
featureファイルで用意されているkeywordは
|
53
|
+
\begin{quote}\begin{verbatim}
|
54
|
+
cucumber --i18n LANG
|
55
|
+
\end{verbatim}\end{quote}
|
56
|
+
によって表示される.LANG=ja, enに対しては下記の通りになっています.
|
57
|
+
|
58
|
+
\begin{table}[htbp]\begin{center}
|
59
|
+
\caption{}
|
60
|
+
\begin{tabular}{llll}
|
61
|
+
\hline
|
62
|
+
keyword &ja(japanese) &en(english) \\ \hline
|
63
|
+
feature & "フィーチャ", "機能" &"Feature", "Business Need", \\
|
64
|
+
& &"Ability" \\
|
65
|
+
background &"背景" &"Background" \\
|
66
|
+
scenario &"シナリオ" &"Scenario" \\
|
67
|
+
&"シナリオアウトライン", &"Scenario Outline", \\
|
68
|
+
scenario\_outline &"シナリオテンプレート","テンプレ", & "Scenario Template" \\
|
69
|
+
&"シナリオテンプレ" & \\
|
70
|
+
examples &"例", "サンプル" &"Examples", "Scenarios" \\
|
71
|
+
given &"* ", "前提" &"* ", "Given " \\
|
72
|
+
when &"* ", "もし" &"* ", "When " \\
|
73
|
+
then &"* ", "ならば" &"* ", "Then " \\
|
74
|
+
and &"* ", "かつ" &"* ", "And " \\
|
75
|
+
but &"* ", "しかし", "但し", "ただし" &"* ", "But " \\
|
76
|
+
given (code) &"前提" &"Given" \\
|
77
|
+
when (code) &"もし" &"When" \\
|
78
|
+
then (code) &"ならば" &"Then" \\
|
79
|
+
and (code) &"かつ" &"And" \\
|
80
|
+
but (code) &"しかし", "但し","ただし" &"But" \\
|
81
|
+
\hline
|
82
|
+
\end{tabular}
|
83
|
+
\label{default}
|
84
|
+
\end{center}\end{table}
|
85
|
+
%for inserting separate lines, use \hline, \cline{2-3} etc.
|
86
|
+
|
87
|
+
\subsubsection{Cucumber,RSpecインストール}
|
88
|
+
まずrspecをgemでinstallする.
|
89
|
+
|
90
|
+
\begin{enumerate}
|
91
|
+
\item gem install rspec --version 2.0.0
|
92
|
+
\item rspec --help
|
93
|
+
\end{enumerate}
|
94
|
+
と入力して
|
95
|
+
\begin{lstlisting}[style=customCsh,basicstyle={\scriptsize\ttfamily}]
|
96
|
+
/Users/nasubi/nasu% rspec --help
|
97
|
+
Usage: rspec [options] [files or directories]
|
98
|
+
\end{lstlisting}
|
99
|
+
のような表示がされていればinstallができている.次に,cucumberをinstallする
|
100
|
+
|
101
|
+
\begin{enumerate}
|
102
|
+
\item gem install cucumber --version 0.9.2
|
103
|
+
\item cucumber --help
|
104
|
+
\end{enumerate}
|
105
|
+
と入力して
|
106
|
+
\begin{lstlisting}[style=customCsh,basicstyle={\scriptsize\ttfamily}]
|
107
|
+
cucumber --help
|
108
|
+
Usage: cucumber [options] [ [FILE|DIR|URL][:LINE[:LINE]*] ]+
|
109
|
+
\end{lstlisting}
|
110
|
+
のような表示がされていればinstallできている.
|
111
|
+
|
112
|
+
\subsubsection{ディレクトリー構造と使用手順}
|
113
|
+
cucumberはRubygemsの提供する基本directory構造での作業を前提としています.
|
114
|
+
その構造を表示すると次のようになります.
|
115
|
+
\begin{quote}\begin{verbatim}
|
116
|
+
bob% tree .
|
117
|
+
.
|
118
|
+
├── Gemfile
|
119
|
+
├── Rakefile
|
120
|
+
├── features
|
121
|
+
│ ├── hogehoge.feature
|
122
|
+
│ ├── step_definitions
|
123
|
+
│ │ └── hogehoge_step.rb
|
124
|
+
│ ├── support
|
125
|
+
│ ├── env.rb
|
126
|
+
├── lib
|
127
|
+
│ ├── daddygongon
|
128
|
+
│ │ ├── emacs_help.yml
|
129
|
+
│ │ ├── my_todo.yml
|
130
|
+
├── pkg
|
131
|
+
├── spec
|
132
|
+
│ ├── my_help_spec.rb
|
133
|
+
│ ├── my_todo
|
134
|
+
│ │ ├── todo_spec.rb
|
135
|
+
│ ├── spec_helper.rb
|
136
|
+
│ └── support
|
137
|
+
│ └── aruba.rb
|
138
|
+
\end{verbatim}\end{quote}
|
139
|
+
カレントディレクトリ(.)の中にfeaturesというサブディレクトリを作成します.
|
140
|
+
そのfeaturesの中に書きたいシナリオを書いた,hogehoge.featureを作成します.
|
141
|
+
featureの具体例は上記に示してします.
|
142
|
+
|
143
|
+
次にシェルを開いて,カレントディレクトリで,
|
144
|
+
\begin{quote}\begin{verbatim}
|
145
|
+
cucumber features hogehoge.feature
|
146
|
+
\end{verbatim}\end{quote}
|
147
|
+
と入力します.そうすると以下のような出力が得られます.
|
148
|
+
\begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
|
149
|
+
Feature: Description of feature
|
150
|
+
|
151
|
+
Scenario: Description of scenario # features/hogehoge.feature:3
|
152
|
+
Given I want to explain scenario # features/hogehoge.feature:4
|
153
|
+
Then I investigate # features/hogehoge.feature:5
|
154
|
+
When I know the meaning # features/hogehoge.feature:6
|
155
|
+
|
156
|
+
1 scenario (1 undefined)
|
157
|
+
3 steps (3 undefined)
|
158
|
+
0m0.066s
|
159
|
+
|
160
|
+
You can implement step definitions for undefined steps with these snippets:
|
161
|
+
|
162
|
+
Given(/^I want to explain scenario$/) do
|
163
|
+
pending # Write code here that turns the phrase above into concrete actions
|
164
|
+
end
|
165
|
+
|
166
|
+
Then(/^I investigate$/) do
|
167
|
+
pending # Write code here that turns the phrase above into concrete actions
|
168
|
+
end
|
169
|
+
|
170
|
+
When(/^I know the meaning$/) do
|
171
|
+
pending # Write code here that turns the phrase above into concrete actions
|
172
|
+
end
|
173
|
+
|
174
|
+
\end{lstlisting}
|
175
|
+
ここではステップ定義に使用することができるコードブロックが表示されています.
|
176
|
+
ステップ定義はステップを作成するための方法です.このサンプルでは,Giver(), When(), Then()の
|
177
|
+
3つのメソッドを使ってステップを記述します.
|
178
|
+
これらのメソッドはそれぞれ\/\/で囲まれたRegexp(正規表現)とブロックを受け取ります.
|
179
|
+
Cucumberはシナリオの最初のステップを読み取り,そのステップにマッチする正規表現を持つステップ定義を探します.
|
180
|
+
その中の対応するステップ定義のブロックを実行します.
|
181
|
+
|
182
|
+
これはfeaturesディレクトリの下にstep\_definitionsディレクトリーにあることになっています.
|
183
|
+
このシナリオを成功させるには,Cucumberが読み込めるファイルにステップ定義を保存する必要があります[1, pp15.].
|
184
|
+
その内容は次の通りcucumberから自動生成されます.
|
185
|
+
\begin{lstlisting}[style=customRuby,basicstyle={\scriptsize\ttfamily}]
|
186
|
+
|
187
|
+
Given(/^I want to explain scenario$/) do
|
188
|
+
pending # Write code here that turns the phrase above into concrete actio\
|
189
|
+
ns
|
190
|
+
end
|
191
|
+
|
192
|
+
Then(/^I investigate$/) do
|
193
|
+
pending # Write code here that turns the phrase above into concrete actio\
|
194
|
+
ns
|
195
|
+
end
|
196
|
+
|
197
|
+
When(/^I know the meaning$/) do
|
198
|
+
pending # Write code here that turns the phrase above into concrete actio\
|
199
|
+
ns
|
200
|
+
end
|
201
|
+
|
202
|
+
\end{lstlisting}
|
203
|
+
pendingを削除して,そこにあれば良いなと思うコードを記述していきます.
|
204
|
+
ここまでがCucumberの使用方法のテンプレートです.
|
205
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
\relax
|
2
|
+
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}my\_helpについて}{15}}
|
3
|
+
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.1}使用法}{15}}
|
4
|
+
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.2}my\_helpのインストール}{15}}
|
5
|
+
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.3}githubに行ってdaddygongonのmy\_helpをforkする}{15}}
|
6
|
+
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.4}my\_helpの更新}{16}}
|
7
|
+
\@writefile{toc}{\contentsline {paragraph}{gitを用いてmy\_helpを新しくする.}{16}}
|
8
|
+
\@writefile{toc}{\contentsline {paragraph}{次にとってきた.ymlを\nobreakspace {}/.my\_helpにcpする.}{16}}
|
9
|
+
\@setckpt{method_usage}{
|
10
|
+
\setcounter{page}{17}
|
11
|
+
\setcounter{equation}{0}
|
12
|
+
\setcounter{enumi}{2}
|
13
|
+
\setcounter{enumii}{0}
|
14
|
+
\setcounter{enumiii}{0}
|
15
|
+
\setcounter{enumiv}{0}
|
16
|
+
\setcounter{footnote}{0}
|
17
|
+
\setcounter{mpfootnote}{0}
|
18
|
+
\setcounter{part}{0}
|
19
|
+
\setcounter{section}{2}
|
20
|
+
\setcounter{subsection}{3}
|
21
|
+
\setcounter{subsubsection}{4}
|
22
|
+
\setcounter{paragraph}{0}
|
23
|
+
\setcounter{subparagraph}{0}
|
24
|
+
\setcounter{figure}{2}
|
25
|
+
\setcounter{table}{1}
|
26
|
+
\setcounter{lstnumber}{17}
|
27
|
+
\setcounter{lstlisting}{0}
|
28
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
|
2
|
+
\subsection{my\_helpについて}
|
3
|
+
\subsubsection{使用法}
|
4
|
+
my\_helpは本研究室の西谷が開発したものです.
|
5
|
+
|
6
|
+
以下はmy\_helpのREADMEです[2].
|
7
|
+
|
8
|
+
CUI(CLI)ヘルプのUsage出力を真似て,user独自のhelpを作成・提供するgem.
|
9
|
+
|
10
|
+
\begin{enumerate}
|
11
|
+
\item 問題点
|
12
|
+
\end{enumerate}
|
13
|
+
CUIやshell, 何かのプログラミング言語などを習得しようとする初心者は,
|
14
|
+
commandや文法を覚えるのに苦労します.少しのkey(とっかかり)があると
|
15
|
+
思い出すんですが,うろ覚えでは間違えて路頭に迷います.問題点は,
|
16
|
+
- manは基本的に英語
|
17
|
+
- manualでは重たい
|
18
|
+
- いつもおなじことをwebで検索して
|
19
|
+
- 同じとこ見ている
|
20
|
+
- memoしても,どこへ置いたか忘れる
|
21
|
+
|
22
|
+
などです.
|
23
|
+
|
24
|
+
\begin{enumerate}
|
25
|
+
\item 特徴
|
26
|
+
\end{enumerate}
|
27
|
+
これらをgem環境として提供しようというのが,このgemの目的です.
|
28
|
+
仕様としては,
|
29
|
+
- userが自分にあったmanを作成
|
30
|
+
- 雛形を提供
|
31
|
+
\begin{quote}\begin{verbatim}
|
32
|
+
- おなじformat, looks, 操作, 階層構造
|
33
|
+
\end{verbatim}\end{quote}
|
34
|
+
- すぐに手が届く
|
35
|
+
- それらを追加・修正・削除できる
|
36
|
+
|
37
|
+
hikiでやろうとしていることの半分くらいはこのあたりのことなの
|
38
|
+
かもしれません.memoソフトでは,検索が必要となりますが,my\_helpは
|
39
|
+
key(記憶のとっかかり)を提供することが目的です.
|
40
|
+
|
41
|
+
\subsubsection{my\_helpのインストール}
|
42
|
+
\subsubsection{githubに行ってdaddygongonのmy\_helpをforkする}
|
43
|
+
\begin{enumerate}
|
44
|
+
\item git clone git@github.com:daddygongon/my\_help.git
|
45
|
+
\item cd my\_help
|
46
|
+
\item rake to\_yml
|
47
|
+
\item rake clean\_exe
|
48
|
+
\item [sudo] bundle exec exe/my\_help -m
|
49
|
+
\item source ~/.zshrc or source ~/.cshrc
|
50
|
+
\item my\_help -l
|
51
|
+
\item rake add\_yml
|
52
|
+
\end{enumerate}
|
53
|
+
\subsubsection{my\_helpの更新}
|
54
|
+
\paragraph{gitを用いてmy\_helpを新しくする.}
|
55
|
+
\begin{enumerate}
|
56
|
+
\item git remote -vをする(remoteの確認).
|
57
|
+
\item (upstreamがなければ)git remote add upstream git@github.com:gitname/my\_help.git
|
58
|
+
\item git add -A
|
59
|
+
\item git commit -m 'hogehoge'
|
60
|
+
\item git push upstream master(ここで自分のmy\_helpをupstreamに送っとく)
|
61
|
+
\item git pull origin master(新しいmy\_helpを取ってくる)
|
62
|
+
\end{enumerate}
|
63
|
+
\paragraph{次にとってきた.ymlを~/.my\_helpにcpする.}
|
64
|
+
\begin{enumerate}
|
65
|
+
\item cd my\_helpでmy\_helpに移動.
|
66
|
+
\item cp hogehoge.yml ~/.my\_help
|
67
|
+
\end{enumerate}
|
68
|
+
それを動かすために
|
69
|
+
(sudo)bundle exec ruby exe/my\_help -mをする.
|
70
|
+
|
71
|
+
ここで過去にsudoをした人はpermissionがrootになっているので,sudoをつけないとerrorが出る.
|
72
|
+
|
73
|
+
(sudoで実行していたら権限がrootに移行される)
|
74
|
+
|
75
|
+
新しいターミナルを開いて動くかチェックする.
|
76
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
\relax
|
2
|
+
\@input{overview.aux}
|
3
|
+
\@input{introduction.aux}
|
4
|
+
\@writefile{toc}{\contentsline {section}{\numberline {2}先行研究,方法}{6}}
|
5
|
+
\@input{method_bdd.aux}
|
6
|
+
\@input{method_cucumber.aux}
|
7
|
+
\@input{method_usage.aux}
|
8
|
+
\@input{code.aux}
|
9
|
+
\@input{features.aux}
|
10
|
+
\@input{consideration.aux}
|
11
|
+
\@writefile{toc}{\contentsline {section}{\numberline {5}謝辞}{28}}
|
12
|
+
\@writefile{toc}{\contentsline {section}{\numberline {6}参考文献}{28}}
|