Skip to content
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

Open
levelibeeka opened this issue Apr 4, 2015 · 3 comments
Open

Test coverage improvement #188

levelibeeka opened this issue Apr 4, 2015 · 3 comments
Milestone

Comments

@levelibeeka
Copy link

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.

@commonquail
Copy link
Contributor

We can use something like the following program to quickly generate as large a sequence of doFizzBuzz(int, String) as QA deems necessary.

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());
    }
}

@qoh
Copy link

qoh commented Apr 14, 2015

@commonquail Do note that such a program would need its own tests as well

@emiln emiln modified the milestone: Testing Apr 17, 2015
@treeowl
Copy link

treeowl commented Dec 10, 2015

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
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants