Skip to content

Instantly share code, notes, and snippets.

//Pict.groovyがClassPathにある前提で次のスクリプトを実行する
//pict.exeはPict.pictPathに設定する
//エラーが起きたときについて検知していない。
//水準に「,」が入っているときは@escapeComma@でエスケープしている。@escapeComma@が水準にあるときは、escapeComma の値を変えてください。
//水準に「\n」が入っているときは@escapeLineSeparator@でエスケープしている。@escapeLineSeparator@が水準にあるときは、escapeLineSeparator の値を変えてください。
class Pict{
def static pictPath = $/D:\Apps\PICT\pict.exe/$

はじめに

ここに書かれているのは、「主目的」であって、プログラマーもしくはテストエンジニアが「他のことを考慮していない」という意味ではありません。あと、僕の解釈なので一般論というわけではないないです。

プログラマー:「テストを書く」

プログラマーは基本的に「テストを書く」というと思います。実際に書いているんですけど。これ、手動テストしかなかった時代は、どうやって言っていたのかわかりませんけど、これは非常に的を得ていると思うのです。プログラマーの主眼は「要求を設計し実装すること」にあります。そしてその意志はプロダクトコードとなって表現されます。そう、プロダクトコードというのは、表現手段なんです。なので、彼らにとってテストコードというのはあくまで「要求を設計し実装すること」のある表現手段であり、それがプロダクトコード以外であるということにすぎないのではないでしょうか。

プログラマーはあふれるその思いをコードに表現する事が楽しみです。主目的である「要求を設計し実装すること」をテストというフィールドにおいて実施するというのは若干の矛盾をはらんでいて、やっていることは、「要求を設計し実装すること」をしながら確認がとれるものとして、テストコードという手段をとった。くらいのイメージです。

/*
Copyright (C) 2011 Yusuke Yamamoto
Licensed under the Apache License, Version 2.0 (the "License");
http://www.apache.org/licenses/LICENSE-2.0
*/
import org.quartz.*
import org.quartz.impl.StdSchedulerFactory
import twitter4j.TwitterFactory
class UpdateProfileImageTask {
@kyonmm
kyonmm / VendingSpec.groovy
Created June 24, 2012 08:36
Cafe.Spockでの演習
import spock.lang.Specification
import spock.lang.Unroll
/**
* Created by IntelliJ IDEA.
* User: kyon
* Date: 12/06/24
* Time: 14:53
* To change this template use File | Settings | File Templates.
*/
class VendingSpec extends Specification {
@kyonmm
kyonmm / build.groovy
Created June 5, 2012 06:14
Gradle + Mercurial + Windowsな環境で保存->ビルド->コミットまでこなします。 基本的には「トピックブランチに移動->本スクリプトを起動->開発->本スクリプトを終了->コミットを整理->ブランチをマージ」とします。gradleのタスク実行はdefaultTaskが実行されるようになっているので、build.gradleのdefaultTasksを設定するか、def p = "cmd /c gradle"のあとに起動したいタスクを指定します。基本的にはUnit Testなタスク
def root = new File("./src/")
println root.absolutePath
lastmodified = [:]
current = [:]
while(true){
current.clear()
root.eachFileRecurse {
current << ["${it.absolutePath}":it.lastModified()]
}
if(!current.equals(lastmodified)){
@kyonmm
kyonmm / nagoya.groovy
Created May 18, 2012 02:36 — forked from indare/nagoya.groovy
nagoya.groovy
/**
* Created with IntelliJ IDEA.
* User: m_arino
* Date: 12/05/18
* Time: 11:10
* To change this template use File | Settings | File Templates.
*/
(0..100).each {
def printBuff = ""
@kyonmm
kyonmm / jenkins.groovy
Created May 9, 2012 06:45
Jenkins起動スクリプト
//Jenkins起動スクリプトです。
//環境変数にJENKINS_HOMEを指定する必要があります。
//また、jenkins.warはJENKINS_HOME配下にあるものとして使われています。
if(!System.getenv("JENKINS_HOME")){
println "Please Set 'JENKINS_HOME'"
return
}
if(!new File("${System.getenv("JENKINS_HOME")}/jenkins.war").exists()){
println "Please Confilm ${System.getenv("JENKINS_HOME")}/jenkins.war"
return
@kyonmm
kyonmm / server.groovy
Created February 11, 2012 03:52
Groovyで簡易HTTPサーバー
import com.sun.net.httpserver.HttpExchange
import com.sun.net.httpserver.HttpHandler
import com.sun.net.httpserver.HttpServer
import groovy.xml.MarkupBuilder
def PORT = 6001
HttpServer server = HttpServer.create(new InetSocketAddress(PORT), 0);
server.createContext("/", new HttpHandler() {
@Override
public void handle(HttpExchange he) throws IOException {
@kyonmm
kyonmm / gist:1443730
Created December 7, 2011 17:37
JavaのListリテラルとMapリテラル
import java.util.*;
public class Main {
public static void main(String... a){
HashMap<String, Integer> m = map($("hoge1",1),$("hoge2",2));
System.out.println(m);
ArrayList<String> l = list("hoge","fuga");
System.out.println(l);
}
@kyonmm
kyonmm / StringListMultiply
Created September 12, 2011 06:56
文字列リストを辞書的に網羅する。
String.metaClass.multiply = {String s ->
delegate+s
}
List.metaClass.multiply = { List l ->
result = []
delegate.each{e1 ->
l.each{e2 ->
result << e1*e2
}
}