I’m new to Stackoverflow and I wonder, why almost everybody writes samplecodes with a static main() and output like here in first answer: some ugly main
from some ugly main:
But what you posted looks like it’s just a properties file. Try this:
import java.io.FileInputStream; import java.util.Properties; public class Main { public static void main(String[] args) throws Exception { Properties properties = new Properties(); properties.load(new FileInputStream("test.properties")); System.out.println(properties.getProperty("ReferenceDataLocation")); System.out.println(properties.getProperty("LicenseKey")); System.out.println(properties.getProperty("foo")); } }which will print:
as al null
wouldn’t it be nicer to write it as JUnit Test? It’s easier to read. You can verify the result with just CTRL+C + CTRL-V + RunAs -> JUnit and see what is expected (or not).
Am I wrong with this idea?
I would write the main as this:
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
import java.io.ByteArrayInputStream;
import java.util.Properties;
import org.junit.Test;
public class TestSomeInputStreamAsProperties {
String someFileAsString =
"ReferenceDataLocation = as\n"+
" \n" +
" \n" +
" ##############################################################################\n" +
" #\n" +
" # LicenseKey\n" +
" # Address Doctor License\n" +
" #\n" +
" ##############################################################################\n" +
" LicenseKey = al\n";
@Test
public void whenReadingFromSomeInputStreamWeShouldGetProperties() throws Exception {
// Arrange
Properties properties = new Properties();
// Act
properties.load(new ByteArrayInputStream(someFileAsString.getBytes()));
// Assert
assertThat(properties.getProperty("ReferenceDataLocation"), is("as"));
assertThat(properties.getProperty("LicenseKey"), is("al"));
assertThat(properties.getProperty("foo"), is(nullValue()));
}
}
The question is: why would I write a sample with main() and output? why don’t users try to get on the JUnit train and start writing tests to verify their code?
+
Another Question: why don’t people post their problems as JUnit tests?
I’m kinda disappointed.
EDIT: – don’t get me wrong about this. It’s just expectations > reality 😉 I think stackoverflow is still a great site and I will write here all my problems and try to help others to solve theirs. I thought, JUnit is more spread and it would be appreciated by your community to focus on solving problems with JUnit.
Instead I realise that it is not wanted.
Wouldn’t you be disappointed too?
Seasoned open source developers with experiences in several high profile projects
know, that best chance to get patch approved and integrated is to provide failing unit
test along with fixing patch. But such people are mostly answering questions here – not asking.
So it is task for answerers to promote good asking practices by up/downvoting questions and writing meaningfull comments.