Posts Tagged netbeans

Automatic release packaging w/ version numbers for Netbeans Java Projects…

http://www.flickr.com/photos/lrargerich/3029485203/I just did a nice little Netbeans build.xml hack for the visural-wicket project to add a build target which packages a release of the library for distribution (e.g. on Google Code).

A version number is added to the project in the root level file version.properties

#  Copyright 2009 Richard Nichols.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#  under the License.

project.version=0.1

A licence file to be copied into the distribution archive is also added in licence.txt

Then finally the build.xml target

    <target name="-pre-init">
        <property file="version.properties"/>
        <property name="dist.jar" value="dist/${ant.project.name}-${project.version}.jar"/>
    </target>

    <target name="package_for_release" depends="jar,javadoc">
        <mkdir dir="build/release"/>
        <copy file="${dist.jar}" todir="build/release/"/>
        <copy file="licence.txt" todir="build/release/"/>
        <mkdir dir="build/release/doc"/>
        <copy todir="build/release/doc">
            <fileset dir="dist/javadoc" includes="**"/>
        </copy>
        <mkdir dir="build/release/src"/>
        <copy todir="build/release/src">
            <fileset dir="src" includes="**"/>
        </copy>
        <mkdir dir="build/release/test"/>
        <copy todir="build/release/test">
            <fileset dir="test" includes="**"/>
        </copy>
        <zip basedir="build/release/" includes="**" destfile="dist/${ant.project.name}-${project.version}.zip"/>
    </target>

Basically all we do here is to create a new temp folder in build/release, which will copy all the distro files into and then zip into a final archive. We also do a hack to change the dist.jar property to include the version number extracted from the version.properties file. This needs to be “-pre-init” as properties in Ant are immutable once set.

The task copies through the Javadocs, source, tests, binary JAR and licence and packages it into an appropriately named .ZIP.

The target & associated files are appropriate to be used in any Netbeans Java project – there is no hard-reference to visural-wicket.

, , ,

No Comments

NetBeans 6.7 Broke My Parameterized Tests

If you had some JUnit parameterized tests with code such as:

import java.util.Collection;
import junit.framework.TestCase;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

@RunWith(Parameterized.class)
public class MyParamTest extends TestCase {

    public MyParamTest(String s1, String s2) {
        // do something with s1 and s2
    }

    public static Collection getParams() {
        // return test parameters
    }

    public void testSomeStuff() {
        // testing testing testing
    }
}

You may have found when you upgraded to Netbeans 6.7 (with the improved JUnit test runner) that your tests suddenly started failing.

This is because any class extending TestCase is run as a regular JUnit test and so will fail if it’s actually a parameterized test. Just change the code to use the static import instead:

import java.util.Collection;
import static junit.framework.TestCase.*;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

@RunWith(Parameterized.class)
public class MyParamTest {

    public MyParamTest(String s1, String s2) {
        // do something with s1 and s2
    }

    public static Collection getParams() {
        // return test parameters
    }

    public void testSomeStuff() {
        // testing testing testing
    }
}

Bob’s yer mother’s brother.

, , ,

No Comments