Recently I just realize that in if you want to match "any character" in Java/Groovy, you should not use dot match (.).
The reason is: dot match only works for single line text, will not work for line breaks. For the multiple lines text matching, the solution to match any character is using [\s\S].
Please refer this article for details.
For example, following code snippet is used for stripping the javascript code in the text
Source code:
Wednesday, April 29, 2015
Learning Scala 1: swap array elements
Here posted my solution for the exercise 2 and 3 of Chapter 3 of page 39, in the book "Scala for the impatient".
Exercise 2. Write a loop that swaps adjacent elements of an array of integers. For example,
Exercise 3. Repeat the preceding assignment, but produce a new array with the swapped
Exercise 2. Write a loop that swaps adjacent elements of an array of integers. For example,
Array(1, 2, 3, 4, 5) becomes Array(2, 1, 4, 3, 5) .
Solution:
values. Use for /yield.
Solution:
Note: I realize you can not write java style for yield statement, like if ( i%2 ==0 ) yield s(i+1)
Monday, April 27, 2015
What I learned from Agile Engineering training
Last week I took the 3-day "Agile Engineering Training" in TELUS, thanks a lot to our trainers from LeanIntuIt - Shawn Button and Declan Whelan. I learned a lot from them. The course covers TDD, Simple Design, SOLID principles, refactoring and dealing with legacy code. The fun part is there are a lots of coding Kata, like Bowling Game, Gilded Rose, etc. I am so glad to have an opportunity to learn those stuff, even actually I learned them since 10 years ago, this time I feel this training is a kind of a review of what I learned since I decided to be a software craftsman.
Here is the mind map summarized of what I learned.
Add some thoughts:
Resources:
Here is the mind map summarized of what I learned.
Add some thoughts:
- TDD/SOLID principles/Refactoring skills become more critical and in an Agile/Scrum team, you have to be great, to be better so that you can deliver faster, your code will be easier to change, easier to maintain;
- Simple Design - it is summarized by only 2 points: fixing names and removing duplication. Combining with TDD's Red/Green/Refactoring cycle, it means just repeating this 2 things with test cases, your complex code logic design phase will turn into many tiny steps which just renaming and removing duplication; if you can do it fluently, the effort of thinking hard before hand becomes simple physical typing movements - which means you can design the code without thinking too much. This conclusion is so striking.
- Refactoring - When I tried the Kata Gilded Rose (a simpler version which have all the tests before), I really sense the power of simple design - refactoring by doing renaming and extract methods, then the business logic gradually emerged, and design pattern is emerged. For me it means as long as you have all the test cases, then you can refactoring the code without need to understand the business logic, and business logic will be more clear after you refactored. That is another aha moment for me. Looks like code quality is a separate attribute beside the domain knowledge. If we apply this to code review, it means the good code should be enough understandable without understanding the business background first.
Resources:
- Four Elements of Simple Design, by JBrain
- Kata: Gilded Rose, this is a great Kata about refactoring, it worth trying more times
Thursday, March 19, 2015
Example to execute RobotFramework test cases using maven plugin
I spent some time using maven plugin to run the RobotFramework tests. It is OK, run as expected.
But I feel it is a kind of restrictive.
Here I post my one maven pom.xml example.
For details, please check my github source code:
1. https://github.com/stevez/robotframework-maven-plugin-example
2. https://github.com/stevez/robotframework-java-keyword
pom.xml
But I feel it is a kind of restrictive.
Here I post my one maven pom.xml example.
For details, please check my github source code:
1. https://github.com/stevez/robotframework-maven-plugin-example
2. https://github.com/stevez/robotframework-java-keyword
pom.xml
Execute RobotFramework test cases using Gradle script
I did some research for RobotFramework using maven plugin. But I don't like it. it is too restrictive.Today I tried to implement a Gradle script, it is working, surprising easy. Here is the code sample.
For details please refer my github repository.
build.gradle
Saturday, February 7, 2015
Run soapUI project using ANT script
Following is the sample ANT script to run soapUI project. To run it, you need to copy all the jar files from soapUI installation folder and also add soapUI-xxx.jar from bin folder, and put them in the lib folder and add it to ant classpath.
This ant script support:
1. you can run test by specifying the paramters like suite name, url, user name, password etc.
2. by default it will run all the test cases in the project.
3. it will generate JUnit compatible report.
Please refer my github reporitory for the whole sample code.
<project name="WS-Test" default="test" >
<property file="build.properties"/>
<property name="test.dir" value="test-results"/>
<property name="project.dir" location="project"/>
<target name="clean">
<delete dir="${test.dir}"/>
</target>
<target name="init">
<mkdir dir="${test.dir}"/>
</target>
<target name="test-with-properties" depends="init">
<java classname="com.eviware.soapui.tools.SoapUITestCaseRunner" errorproperty="tests-failed" fork="yes" dir="${test.dir}">
<arg line="-j -M -r -a -f${basedir}/${test.dir}"/>
<arg value="-e${wsdl.url}"/>
<arg value="-s${soapui.testsuite}"/>
<arg value="${project.dir}/${soapui.project}"/>
<arg value="-x${user.name}"/>
<arg value="-x${user.password}"/>
<classpath>
<fileset dir="lib" includes="*.jar"/>
</classpath>
</java>
</target>
<target name="test" depends="init">
<java classname="com.eviware.soapui.tools.SoapUITestCaseRunner" errorproperty="tests-failed" fork="yes" dir="${test.dir}">
<arg line="-j -M -r -a -f${basedir}/${test.dir}"/>
<arg value="${project.dir}/${soapui.project}"/>
<classpath>
<fileset dir="lib" includes="*.jar"/>
</classpath>
</java>
</target>
<target name="test-single-project" depends="init">
<antcall target="run-single-test">
<param name="project" value="${project.dir}/${soapui.project}"/>
</antcall>
</target>
<target name="run-single-test">
<java classname="com.eviware.soapui.tools.SoapUITestCaseRunner" errorproperty="tests-failed" fork="yes" dir="${test.dir}">
<arg line="-j -M -r -a -f${basedir}/${test.dir}"/>
<arg value="${project}"/>
<classpath>
<fileset dir="lib" includes="*.jar"/>
</classpath>
</java>
</target>
<target name="report">
<junitreport todir="${test.dir}">
<fileset dir="${test.dir}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${test.dir}/reports/html"/>
</junitreport>
</target>
</project>
Tuesday, February 3, 2015
RobotFramework tools installation guide
I used RobotFramework for more than half a year, I really love it.
Now I shared my installation guide.
Hope this will be helpful for any Developers who are interested in RobotFramework, but don't have Python experiences.
Set up Robot framework Tool Chai
1. Install python
download python 2.7.6
https://www.python.org/downloads/
add the python installation folder to the windows PATH environment variable, for example
C:\dev_software\Python27;
2. Install pip
http://pip.readthedocs.org/en/latest/installing.html
download get-pip.py via https://bootstrap.pypa.io/get-pip.py
open a command window via "run as admin", type:
python get-pip.py
Add following into windows PATH environment variable:
C:\dev_software\Python27\Scripts;
3. Install robot framework
pip install robotframework
4. Install selenium2library
pip install robotframework-selenium2library
5. Install RIDE
install wxPython wxPython 2.8.12.1
http://sourceforge.net/projects/wxpython/files/wxPython/2.8.12.1/wxPython2.8-win32-unicode-2.8.12.1-py27.exe/download
install through windows ride package win32 version
https://code.google.com/p/robotframework-ride/downloads/detail?name=robotframework-ride-1.2.3.win32.exe
Or install using pip
pip install robotframework-ride
6. Install selenium webdriver client
chrome driver: http://chromedriver.storage.googleapis.com/2.10/chromedriver_win32.zip
IE driver
http://selenium-release.storage.googleapis.com/2.42/IEDriverServer_Win32_2.42.0.zip
unzip them and copy the exe files in c:\webdriver directory
set them to windows path
C:\dev_software\webdriver
7. Test
run pip list, then you should see following:
decorator (3.4.0)
docutils (0.11)
pip (1.5.6)
robotframework (2.8.5)
robotframework-ride (1.3)
robotframework-selenium2library (1.5.0)
selenium (2.42.1)
setuptools (5.1)
- open dos command, type
pybot
then it will shows:
[ ERROR ] Expected at least 1 argument, got 0.
Try --help for usage information.
Documents:
- RobotFramework installation doc
https://code.google.com/p/robotframework/wiki/Installation#Python_package_managers
- RobotFramework Selenium2Library installation guide
https://github.com/rtomac/robotframework-selenium2library
- RIDE installation instructions:
https://github.com/robotframework/RIDE/wiki/Installation-Instructions
- selenium2library keywords doc
http://rtomac.github.io/robotframework-selenium2library/doc/Selenium2Library.html
Now I shared my installation guide.
Hope this will be helpful for any Developers who are interested in RobotFramework, but don't have Python experiences.
Set up Robot framework Tool Chai
1. Install python
download python 2.7.6
https://www.python.org/downloads/
add the python installation folder to the windows PATH environment variable, for example
C:\dev_software\Python27;
2. Install pip
http://pip.readthedocs.org/en/latest/installing.html
download get-pip.py via https://bootstrap.pypa.io/get-pip.py
open a command window via "run as admin", type:
python get-pip.py
Add following into windows PATH environment variable:
C:\dev_software\Python27\Scripts;
3. Install robot framework
pip install robotframework
4. Install selenium2library
pip install robotframework-selenium2library
5. Install RIDE
install wxPython wxPython 2.8.12.1
http://sourceforge.net/projects/wxpython/files/wxPython/2.8.12.1/wxPython2.8-win32-unicode-2.8.12.1-py27.exe/download
install through windows ride package win32 version
https://code.google.com/p/robotframework-ride/downloads/detail?name=robotframework-ride-1.2.3.win32.exe
Or install using pip
pip install robotframework-ride
6. Install selenium webdriver client
chrome driver: http://chromedriver.storage.googleapis.com/2.10/chromedriver_win32.zip
IE driver
http://selenium-release.storage.googleapis.com/2.42/IEDriverServer_Win32_2.42.0.zip
unzip them and copy the exe files in c:\webdriver directory
set them to windows path
C:\dev_software\webdriver
7. Test
run pip list, then you should see following:
decorator (3.4.0)
docutils (0.11)
pip (1.5.6)
robotframework (2.8.5)
robotframework-ride (1.3)
robotframework-selenium2library (1.5.0)
selenium (2.42.1)
setuptools (5.1)
- open dos command, type
pybot
then it will shows:
[ ERROR ] Expected at least 1 argument, got 0.
Try --help for usage information.
Documents:
- RobotFramework installation doc
https://code.google.com/p/robotframework/wiki/Installation#Python_package_managers
- RobotFramework Selenium2Library installation guide
https://github.com/rtomac/robotframework-selenium2library
- RIDE installation instructions:
https://github.com/robotframework/RIDE/wiki/Installation-Instructions
- selenium2library keywords doc
http://rtomac.github.io/robotframework-selenium2library/doc/Selenium2Library.html
Subscribe to:
Posts (Atom)