-
Notifications
You must be signed in to change notification settings - Fork 770
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test coverage improvement #188
Milestone
Comments
We can use something like the following program to quickly generate as large a sequence of import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.PrintStream;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.FizzBuzz;
public final class A {
public static void main(final String[] args) throws Exception {
final PrintStream sysout = System.out;
final FizzBuzz fb = new FizzBuzz();
final StringBuilder result = new StringBuilder();
for (int n = 1; n <= 100; ++n) {
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final BufferedOutputStream bos = new BufferedOutputStream(baos);
System.setOut(new PrintStream(bos));
fb.fizzBuzz(n);
System.out.flush();
result.append(String.format("doFizzBuzz(%d, \"%s\");\n",
n,
baos.toString().replaceAll("\n", "\\\\n")));
}
sysout.println(result.toString());
}
} |
@commonquail Do note that such a program would need its own tests as well |
A proper enterprise package will certainly include a QuickCheck test suite with an exhaustive set of appropriate properties. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
By definition, FizzBuzz requires all numbers from 0 to 100 processed. Therefore the following test is unacceptably weak:
doFizzBuzz(1, "1\n"); doFizzBuzz(2, "1\n2\n"); doFizzBuzz(3, "1\n2\nFizz\n"); doFizzBuzz(4, "1\n2\nFizz\n4\n"); doFizzBuzz(5, "1\n2\nFizz\n4\nBuzz\n"); doFizzBuzz(6, "1\n2\nFizz\n4\nBuzz\nFizz\n"); doFizzBuzz(7, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n"); doFizzBuzz(8, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\n"); doFizzBuzz(9, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\n"); doFizzBuzz(10, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n"); doFizzBuzz(11, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\n"); doFizzBuzz(12, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n"); doFizzBuzz(13, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n"); doFizzBuzz(14, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\n"); doFizzBuzz(15, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\nFizzBuzz\n"); doFizzBuzz(16, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\nFizzBuzz\n16\n");
By adding more lines like the above to to this test, coverage could be improved significantly.
The text was updated successfully, but these errors were encountered: