- Groovy Unit Testing
- XML di Groovy
- Expandos
Groovy Unit Testing
Sama seperti java, groovy mempunyai unit testing. Dimana kita tidak perlu men-download terpisah dan sudah terintegrasi dengan JUnit. Mari kita lihat contoh penggunaannya unit testing di groovy:
Sama seperti java, groovy mempunyai unit testing. Dimana kita tidak perlu men-download terpisah dan sudah terintegrasi dengan JUnit. Mari kita lihat contoh penggunaannya unit testing di groovy:
class RangeTest extends GroovyTestCase {
def lowerCaseRange = 'a'..'z'
def upperCaseRange = 'A'..'Z'
void testLowerCaseRange() {
assert 26 == lowerCaseRange.size()
assertTrue(lowerCaseRange.contains('b'))
assertFalse(lowerCaseRange.contains('B'))
}
void testUpperCaseRange() {
assert 26 == upperCaseRange.size()
assertTrue(upperCaseRange.contains('B'))
assertFalse(upperCaseRange.contains('b'))
}
void testAlphaRange() {
def alphaRange = lowerCaseRange + upperCaseRange
assert 52 == alphaRange.size()
assert alphaRange.contains('b')
assert alphaRange.contains('B')
}
}
cara menajalankan tinggal ketikkan groovy RangeTest di command line. Groovy Unit Testing di extend dari class GroovyTestCase dan setiap method menggunakan naming convention testXXX sebagai prefix.
XML di Groovy
Extensible Markup Language, biasa digunakan untuk persist atau share data di enterprise applications.
Kenapa harus XML ?
Karena XML adalah text-based, sudah ada standart dan sudah banyak yang framework atau libraries yang mendukung XML di berbagai platform. Mari kita compare pembuatan XML dengan java (complicated) dengan groovy (simple and elegant).
Kenapa harus XML ?
Karena XML adalah text-based, sudah ada standart dan sudah banyak yang framework atau libraries yang mendukung XML di berbagai platform. Mari kita compare pembuatan XML dengan java (complicated) dengan groovy (simple and elegant).
package com.yukibuwana.testing;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class GenerateXML {
/**
* @param args
* @throws ParserConfigurationException
* @throws TransformerException
*/
public static void main(String[] args) throws ParserConfigurationException, TransformerException {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.newDocument();
Element todos = doc.createElement("todos");
doc.appendChild(todos);
Element task = doc.createElement("todo");
task.setAttribute("id", "1");
todos.appendChild(task);
Element name = doc.createElement("name");
name.setTextContent("Buy Beginning Groovy and Grails");
task.appendChild(name);
Element note = doc.createElement("note");
note.setTextContent("Purchase book from Amazon.com for all co-workers.");
task.appendChild(note);
TransformerFactory tranFactory = TransformerFactory.newInstance();
Transformer transformer = tranFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(
"{http://xml.apache.org/xslt}indent-amount", "2");
Source src = new DOMSource(doc);
Result dest = new StreamResult(System.out);
transformer.transform(src, dest);
}
}
Mari kita lihat dengan groovy way
def writer = new StringWriter()
def builder = new groovy.xml.MarkupBuilder(writer)
builder.setDoubleQuotes(true)
builder.todos {
todo (id:"1") {
name "Buy Beginning Groovy and Grails"
note "Purchase book from Amazon.com for all co-workers."
}
}
println writer.toString()
Lalu hasil dari kedua seperti ini
Simple XML |
Expandos
Expando adalah class di groovy.util yang digunakan untuk dynamically expandable bean. Artinya, kita bisa menambahkan properties atau closure di saat runtime. Untuk lebih mudahnya, mari kita lihat contoh berikut ini :
class User {
String firstName;
String lastName;
}
def user = new User(firstName: "Yuki", lastName: "Buwana")
println user.firstName + " " + user.lastName
Disini kita membuat class User dengan properties firstName dan lastName diawal. Sekarang kita lihat jika kita menggunakan Expando class
def user = new Expando()
user.firstName = "Yuki"
user.lastName = "Buwana"
println user.firstName + " " + user.lastName
Yoooi... Kita bisa menambahkan properties pada saat runtime. It's amazing.
Banyak hal yang baru di groovy, seperti :
- MOP
- Generate Text with Template
Yang tidak kita bahas disini. Sebagai referensi groovy ada disini atau buku Groovy in Action. Disana dibahas lebih mendalam dan lebih detail.
Untuk tutorial selanjutnya, kita akan memulai dengan Grails itu sendiri.
No comments:
Post a Comment