This weekend I don't have enough time to read much.
Monday, October 29, 2007
Saturday, October 27, 2007
Waiting for delivering
With JetBrains' Amazon.com gift certificate, I decided to buy some books and here they're:
Even though I had a soft copy of most of them but a hard copy will help me don't need to touch my laptop while I'm reading.
- Test Driven: TDD and Acceptance TDD for Java Developers
- Head First Design Patterns (Head First)
- Next Generation Java Testing: TestNG and Advanced Concepts
- Refactoring: Improving the Design of Existing Code
- The Business of Software: What Every Manager, Programmer, and Entrepreneur Must Know to Thrive and Survive in Good Times and Bad
Even though I had a soft copy of most of them but a hard copy will help me don't need to touch my laptop while I'm reading.
Friday, October 26, 2007
No Java 6 in Leopard - I quit
In the past, I thought I would buy a Mac Book Pro to replace my old 3 years Dell Inspiron. That time I heard "MacOS is a comprehensive Java development environment". Also in the point of view of an end user, GUI in MacOS it's more beautiful than the one in Linux and it has many more popular (and better) applications than Linux (You must know that when I used Ubuntu, even I could listen to the music, Skype's voice feature stopped to work without any errors)
But now there is no Java 6 in Leopard (MacOS X 10.5), so I quit. I think you too if you're a Java developer.
But now there is no Java 6 in Leopard (MacOS X 10.5), so I quit. I think you too if you're a Java developer.
Thursday, October 25, 2007
Stubs, Fakes, and Mocks
Funny descriptions about stubs, fakes and mocks, they help me easily to distinguish stubs, fakes and mocks.
Stubs - Looks like a duck but it's not a duck
Fakes - Looks like a duck, walks like a duck but it's not a real duck
Mocks - It's a mechanical duck
Stubs - Looks like a duck but it's not a duck
Fakes - Looks like a duck, walks like a duck but it's not a real duck
Mocks - It's a mechanical duck
TestNG's @DataProvider versus JUnit 4's Parameterized
In "Test Driven - Practical TDD and Acceptance TDD for Java Developers", Koskela used JUnit 4 as unit testing framework but I want to use TestNG so I need to "translate" from JUnit 4 to TestNG. I think it's a good opportunity to know about both of these unit testing frameworks.
In chapter 4, Koskela described about test patterns and one of them is Parameterized Test. To apply this pattern, we need to follow the rule to write the test class as below:
+ The test class must be annotated by
+ Supply a static method, is annotated by
+ And we need to write a constructor which has parameters for expected value and input values.
Example:
It looks very complicated, huh? Now, I will "convert" it to TestNG.
After awhile, I found that TestNG's
+ Supply a method (don't need to be
+ Test method is annotated by
The above source code after was "converted":
The test class is written with TestNG is much simpler also you can have many data providers as you want. And what will happen if you want to test the Calculator for substraction? If you use JUnit 4 as unit testing framework, seems you need to write another test class.
In chapter 4, Koskela described about test patterns and one of them is Parameterized Test. To apply this pattern, we need to follow the rule to write the test class as below:
+ The test class must be annotated by
@RunWith(Parameterized.class)
,+ Supply a static method, is annotated by
@Parameters
and returns a Collection<Object[]>
or its subclass,+ And we need to write a constructor which has parameters for expected value and input values.
Example:
@RunWith(Parameterized.class)
public class ParameterizedTest {
// Provide parameterized data
@Parameters
public static Collection<Object[]> parameters() {
Object[][] data = new Object[][] {
{ 0, 0, 0 }, { 1, 1, 0 },
{ 2, 1, 1 }, { 3, 2, 1 },
{ 4, 3, 1 }, { 5, 5, 0 },
{ 6, 8, -2 } };
return Arrays.asList(data);
}
public int expected, input1, input2;
// Data is bound through constructor
public ParameterizedTest(int expected, int input1,
int input2) {
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
}
//Test method invoked once for each data set
@Test
public void executeParameterizedTest() throws Exception {
assertEquals(expected, new Calculator().add(input1,
input2));
}
}
It looks very complicated, huh? Now, I will "convert" it to TestNG.
After awhile, I found that TestNG's
@DataProvider
can do the same thing. And here is the rule to write test class with TestNG following Parameterized Test pattern:+ Supply a method (don't need to be
static
) is annotated by @DataProvider(name = "dataProviderName")
and returns Object[][]
,+ Test method is annotated by
@Test(dataProvider = "dataProviderName")
and has parameters as same as the Object[]
's elements in data is supplied from data providerThe above source code after was "converted":
public class ParameterizedTest {
@DataProvider(name = "data")
public Object[][] parameters() {
return new Object[][] {
{ 0, 0, 0 }, { 1, 1, 0 },
{ 2, 1, 1 }, { 3, 2, 1 },
{ 4, 3, 1 }, { 5, 5, 0 },
{ 6, 8, -2 } };
}
@Test(dataProvider = "data")
public void executeParameterizedTest(int expected,
int input1,
int input2)
throws Exception {
assert (expected == new Calculator().add(input1,
input2));
}
}
The test class is written with TestNG is much simpler also you can have many data providers as you want. And what will happen if you want to test the Calculator for substraction? If you use JUnit 4 as unit testing framework, seems you need to write another test class.
Wednesday, October 24, 2007
TDD - The hardest thing
These days I spend my spare time to read "Test Driven - Practical TDD and Acceptance TDD for Java Developers". I've just finished chapter 2 and started to bump in chapter 3 but I found out that "Test Driven" is an interesting book (more interesting than "Agile Java: Crafting Code with Test-Driven Development")
In chapter 2 and 3, the author teaches me how to start TDD (test-driven development) with a template parser step by step. IMO, the hardest thing when we start TDD is find out the tests from the requirements or user stories. In simple application, it's easy to find them out. But in more complicated one, it's very hard to find.
In template parser application, I can easy to find out some tests:
+ Test for empty template
+ Test for replacing a variable in the template with its value
+ Test for replacing multiple variables with their values respectively
but in case of an employee management application, how can I find the tests? This question is not easy to answer.
Update: Fix typo
In chapter 2 and 3, the author teaches me how to start TDD (test-driven development) with a template parser step by step. IMO, the hardest thing when we start TDD is find out the tests from the requirements or user stories. In simple application, it's easy to find them out. But in more complicated one, it's very hard to find.
In template parser application, I can easy to find out some tests:
+ Test for empty template
+ Test for replacing a variable in the template with its value
+ Test for replacing multiple variables with their values respectively
but in case of an employee management application, how can I find the tests? This question is not easy to answer.
Update: Fix typo
Wednesday, October 17, 2007
Tip: How to get an IntelliJ IDEA license for free
A few minutes ago I received an email from JetBrains, and do you know what did it say? It said "Hey guy, it's an IntelliJ IDEA license, it's for you, and it's FREE", just kidding :-) Here is a part of email from JetBrains
I greatly appreciate JetBrains' kindness when they give me this present, a 249$ present. But more than the cost, actually they give me a FREE super weapon to work with, to play with and to have fun with.
And now it's the tip: Please download, use and report the bugs you would found in EAP versions of IntelliJ IDEA, you will have a chance to get an IntelliJ IDEA license for free.
Again, thanks JetBrains. Now it's the time to develop with "FREE" pleasure ;-)
Update: After reading the email more carefully, I found that JetBrains will have another gift for me this week. Waiting for another big surprise... :-)
Update: JetBrains gave me a big surprise one more time, I've just received an Amazon.com Gift Certificate. Again, I want to say thanks to JetBrains, you gave me surprise time after time :-)
Hello,
We appreciate your participation in development of IntelliJ IDEA 7.0, and we hope you will continue using IntelliJ IDEA with even more pleasure with the attached below personal license.
Be prepared to receive another gift from JetBrains this week :-)
-The JetBrains Team-
I greatly appreciate JetBrains' kindness when they give me this present, a 249$ present. But more than the cost, actually they give me a FREE super weapon to work with, to play with and to have fun with.
And now it's the tip: Please download, use and report the bugs you would found in EAP versions of IntelliJ IDEA, you will have a chance to get an IntelliJ IDEA license for free.
Again, thanks JetBrains. Now it's the time to develop with "FREE" pleasure ;-)
Update: After reading the email more carefully, I found that JetBrains will have another gift for me this week. Waiting for another big surprise... :-)
Update: JetBrains gave me a big surprise one more time, I've just received an Amazon.com Gift Certificate. Again, I want to say thanks to JetBrains, you gave me surprise time after time :-)
Tuesday, October 16, 2007
IntelliJ IDEA 7.0 reaches to final
Early this morning JetBrains released IntelliJ IDEA 7.0. This new version provides many new and interesting features and also it supplies many improvement (include performance) to support the developers to develop the software with pleasure. You can find the complete list of new features here. And the news about it also was published on several sites: here, here and here.
IMO, these features are the ones I love:
+ Support for Spring
+ Support for Hibernate
+ Integration between Spring and Hibernate
+ Improvement in Change View
+ Support for Groovy
Congratulations, JetBrains! It's the time to develop with more pleasure :-)
Monday, October 15, 2007
Sunday, October 14, 2007
The weekly bag - Oct. 14
- Open Source Tools for the Agile Developer
- 5 Questions on Agile Development - An interesting interview with Steve McConnell
- Introduction to Groovy
- Introduction to Code Coverage
- New C# "Orcas" Language Features: Automatic Properties, Object Initializers, and Collection Initializers
- New "Orcas" Language Feature: Extension Methods
Subscribe to:
Posts (Atom)