Class TestData
- All Implemented Interfaces:
Runnable
- Direct Known Subclasses:
TestData
test-data directories associated with JUnit tests.
We have chosen "test-data" to follow the javadoc "doc-files" convention of ensuring that data
directories don't look anything like normal java packages.
Example:
class MyClass {
public void example() {
Image testImage = new ImageIcon(TestData.url(this, "test.png")).getImage();
Reader reader = TestData.openReader(this, "script.xml");
// ... do some process
reader.close();
}
}
Where the directory structure goes as bellow:
MyClass.javatest-data/test.pngtest-data/script.xml
By convention you should try and locate test-data near the JUnit test cases that uses it. If you need an
access to shared test data, import the TestData class from the sample-module instead of
this one.
- Since:
- 2.4
- Author:
- James McGill, Simone Giannecchiin, Martin Desruisseaux
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe system property key for more extensive test suite.static final StringThe system property key for interactive tests. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedTestData()Do not allow instantiation of this class, except for extending it. -
Method Summary
Modifier and TypeMethodDescriptionprotected static voiddeleteOnExit(File file) Requests that the file or directory denoted by the specified pathname be deleted when the virtual machine terminates.protected static voiddeleteOnExit(File file, boolean force) Requests that the file or directory denoted by the specified pathname be deleted when the virtual machine terminates.static FileAccess togetResource(caller, path)as a non-nullFile.static URLgetResource(Object caller, String name) Locates named test-data resource for caller.static booleanReturnstrueif the running Java virtual machine is 1.5.static booleanstatic booleanstatic booleanReturnstrueif ImageN MediaLib acceleration is available.static ReadableByteChannelopenChannel(Object caller, String name) Provides a channel for named test data.static LineNumberReaderopenReader(Object caller, String name) Provides aBufferedReaderfor named test data.static InputStreamopenStream(Object caller, String name) Provides a non-nullInputStreamfor named test data.voidrun()Deletes all temporary files.static FileCreates a temporary file with the given name.static voidUnzips the give source file in the target directorystatic voidUnzip a file in thetest-datadirectory.static URLAccess togetResource(caller, path)as a non-nullURL.
-
Field Details
-
EXTENSIVE_TEST_KEY
The system property key for more extensive test suite. The value for this key is returned by theisExtensiveTest()method. Some test suites will perform more extensive test coverage if this property is set totrue. The value for this property is typically defined on the command line as a-D"org.geotools.test.extensive"=trueoption at Java or Maven starting time.- See Also:
-
INTERACTIVE_TEST_KEY
The system property key for interactive tests. The value for this key is returned by theisInteractiveTest()method. Some test suites will show windows with maps and other artifacts related to testing if this property is set totrue. The value for this property is typically defined on the command line as a-D"org.geotools.test.interactive"=trueoption at Java or Maven starting time.- See Also:
-
-
Constructor Details
-
TestData
protected TestData()Do not allow instantiation of this class, except for extending it.
-
-
Method Details
-
isBaseJavaPlatform
public static boolean isBaseJavaPlatform()Returnstrueif the running Java virtual machine is 1.5. This is the lowest Java version currently supported by Geotools. This version will increase in future Geotools version.This method was used for some broken JUnit tests that were know to run on JSE 1.4 but not on JSE 1.6 for example.
- Returns:
trueif we are running on the target Java platform.
-
isMediaLibAvailable
public static boolean isMediaLibAvailable()Returnstrueif ImageN MediaLib acceleration is available.This method is used to disable some checks in unit tests that fail when ImageN is run in pure java mode.
- Returns:
trueif ImageN medialib are available.
-
isExtensiveTest
public static boolean isExtensiveTest()Returnstrueif "org.geotools.test.extensive" system property is set totrue. Test suites should check this value before to perform lengthly tests.- Returns:
trueif extensive tests are enabled.
-
isInteractiveTest
public static boolean isInteractiveTest()Returnstrueif "org.geotools.test.interactive" system property is set totrue. Test suites should check this value before showing any kind of graphical window to the user.- Returns:
trueif interactive tests are enabled.
-
getResource
Locates named test-data resource for caller. Note: Consider using themethod instead if the resource should always exists.url(caller, name)- Parameters:
caller- Calling class or object used to locatetest-data.name- resource name intest-datadirectory.- Returns:
- URL or
nullif the named test-data could not be found. - See Also:
-
url
Access togetResource(caller, path)as a non-nullURL. At the difference ofgetResource, this method throws an exception if the resource is not found. This provides a more explicit explanation about the failure reason than the infamousNullPointerException.- Parameters:
caller- Calling class or object used to locatetest-data.path- Path to file intest-data.- Returns:
- The URL to the
test-dataresource. - Throws:
FileNotFoundException- if the resource is not found.- Since:
- 2.2
-
file
Access togetResource(caller, path)as a non-nullFile. You can access thetest-datadirectory with:TestData.file(MyClass.class, null);
- Parameters:
caller- Calling class or object used to locatetest-data.path- Path to file intest-data.- Returns:
- The file to the
test-dataresource. - Throws:
FileNotFoundException- if the file is not found.IOException- if the resource can't be fetched for an other reason.
-
temp
Creates a temporary file with the given name. The file will be created in thetest-datadirectory and will be deleted on exit.- Parameters:
caller- Calling class or object used to locatetest-data.name- A base name for the temporary file.- Returns:
- The temporary file in the
test-datadirectory. - Throws:
IOException- if the file can't be created.
-
openStream
public static InputStream openStream(Object caller, String name) throws FileNotFoundException, IOException Provides a non-nullInputStreamfor named test data. It is the caller responsability to close this stream after usage.- Parameters:
caller- Calling class or object used to locatetest-data.name- of test data to load.- Returns:
- The input stream.
- Throws:
FileNotFoundException- if the resource is not found.IOException- if an error occurs during an input operation.- Since:
- 2.2
-
openReader
public static LineNumberReader openReader(Object caller, String name) throws FileNotFoundException, IOException Provides aBufferedReaderfor named test data. The buffered reader is provided as anLineNumberReaderinstance, which is useful for displaying line numbers where error occur. It is the caller responsability to close this reader after usage.- Parameters:
caller- The class of the object associated with named data.name- of test data to load.- Returns:
- The buffered reader.
- Throws:
FileNotFoundException- if the resource is not found.IOException- if an error occurs during an input operation.- Since:
- 2.2
-
openChannel
public static ReadableByteChannel openChannel(Object caller, String name) throws FileNotFoundException, IOException Provides a channel for named test data. It is the caller responsability to close this chanel after usage.- Parameters:
caller- The class of the object associated with named data.name- of test data to load.- Returns:
- The chanel.
- Throws:
FileNotFoundException- if the resource is not found.IOException- if an error occurs during an input operation.- Since:
- 2.2
-
unzipFile
Unzip a file in thetest-datadirectory. The zip file content is inflated in place, i.e. inflated files are written in the sametest-datadirectory. If a file to be inflated already exists in thetest-datadirectory, then the existing file is left untouched and the corresponding ZIP entry is silently skipped. This approach avoid the overhead of inflating the same files many time if thisunzipFilemethod is invoked before every tests.Inflated files will be automatically deleted on exit if and only if they have been modified. Callers don't need to worry about cleanup, because the files are inflated in the
target/.../test-datadirectory, which is not versionned by SVN and is cleaned by Maven onmvn cleanexecution.- Parameters:
caller- The class of the object associated with named data.name- The file name to unzip in place.- Throws:
FileNotFoundException- if the specified zip file is not found.IOException- if an error occurs during an input or output operation.- Since:
- 2.2
-
unzip
Unzips the give source file in the target directory- Throws:
IOException
-
deleteOnExit
Requests that the file or directory denoted by the specified pathname be deleted when the virtual machine terminates.- Parameters:
file- The file to delete on exit.
-
deleteOnExit
Requests that the file or directory denoted by the specified pathname be deleted when the virtual machine terminates. This method can optionnaly delete the file only if it has been modified, thus giving a chance for test suites to copy their resources only once.- Parameters:
file- The file to delete.force- Iftrue, delete the file in all cases. Iffalse, delete the file if and only if it has been modified. The default value iftrue.- Since:
- 2.4
-
run
public void run()Deletes all temporary files. This method is invoked automatically at shutdown time and should not be invoked directly. It is public only as an implementation side effect.
-