- Fork this github repository (2 points)
- Run the project
- Comment the 3 classes: MarkovApp, MarkovChain & MarkovData (3 points)
- Commit your changes and check-it into github
- On github, make a pull request (1 point)
- Complete the next section: "Analyze IADT functions" into this file (2 points)
- Commit your changes (commit README.md)
- On github, update your pull request (1 point)
- Make tests defined into section: "Functions to test now" (call your test functions using the rule: GIVEN_WHEN_THEN) (10 points)
- Check the test coverage with the Jacoco coverage report provided into: /target/site/jacoco/index.html
- Commit your changes
- On github, update your pull request (1 point)
- that ends
Hereafter, for each classes give function to be tested. Remember that all functions does not have to be tested, some code can be checked by a simple inspection or an analyse, another code can be validated by definition (rules, etc) the others function can be tecsted by unit tests, integration tests or validation tests (IADT: Inspect, Analyse, Define, Test).
Validation Mode | Why ? When ? |
---|---|
I: Inspect | No test needed, just a simple static test (visual) on a subset of classes (commentaries, indentation, etc.) |
A: Analyze | Not easy to test but the algorithm is well know and can be check by a static analyze |
D: Def/Dem | You can Demonstrate the function or by Definition the function needs not test (generate code, call functions, etc.) |
T: Test | the function can be easly test |
Function | I A D T | Comment |
---|---|---|
main | ||
readFileAsString |
Function | I A D T | Comment |
---|---|---|
MarkovChain | ||
generateMarkov | ||
learn | ||
setRgen |
Function | I A D T | Comment |
---|---|---|
read | ||
learnWord | ||
renforceWord | ||
Etc. |
public void learn(String text)
public String generateMarkov(int numWords)
public void read(String text)
public boolean renforceWord(String keyString, String wordToLearn)
- Start with simple classes (models, libraries, etc) at the end make test into complex classes (classes with multiple relations)
- Never test auto generate code
- Never test creator (its a design problem)
- Use @Test before each testFunction !
- You can test a function than throws an exception with the argument: expected
@Test(expected=Exception.class)