TDD??ο??
???????????? ???????[ 2012/6/25 10:50:25 ] ????????
?????????outputPrinter?????????μ??????
public class OutputPrinter {
public void print(String result) {
}
}
??????????????Expectation?????
context.assertIsSatisfied();
????????????????????????????????????
@Test
public void should_play_game_and_win() {
Mockery context = new JUnit4Mockery() {
{
setImposteriser(ClassImposteriser.INSTANCE);
}
};
final AnswerGenerator answerGenerator = context.mock(AnswerGenerator.class);
final InputCollector inputCollector = context.mock(InputCollector.class);
final Guesser guesser = context.mock(Guesser.class);
final OutputPrinter outputPrinter = context.mock(OutputPrinter.class);
context.checking(new Expectations() {
{
one(answerGenerator).generate();
will(returnValue("1234"));
}
{
one(inputCollector).guess();
will(returnValue("1234"));
}
{
oneOf(guesser).verify(with(equal("1234"))?? with(equal("1234")));
will(returnValue("4A0B"));
}
{
oneOf(outputPrinter).print(with(equal("You win")));
}
});
Game game = new Game(answerGenerator?? inputCollector?? guesser?? outputPrinter);
game.start();
context.assertIsSatisfied();
}
???????в?????????????????????
java.lang.AssertionError: not all expectations were satisfied
expectations:
expected once?? never invoked: answerGenerator.generate(); returns "1234"
expected once?? never invoked: inputCollector.guess(); returns "1234"
expected once?? never invoked: guesser.verify("1234"); returns "4A0B"
expected once?? never invoked: outputPrinter.print("You win"); returns a default value
at org.jmock.lib.AssertionErrorTranslator.translate(AssertionErrorTranslator.java:20)
at org.jmock.Mockery.assertIsSatisfied(Mockery.java:196)
at com.swzhou.tdd.guess.number.GameFacts.should_play_game_and_win(GameFacts.java:54)
??????????????????????????????????????????????ж?????????????????????????game.start()??????????????ò??????????????аɡ?
???????????????Game?????????????Э?????????Game????Σ?
private AnswerGenerator answerGenerator;
private InputCollector inputCollector;
private Guesser guesser;
private OutputPrinter outputPrinter;
public Game(AnswerGenerator answerGenerator?? InputCollector inputCollector?? Guesser guesser?? OutputPrinter outputPrinter) {
this.answerGenerator = answerGenerator;
this.inputCollector = inputCollector;
this.guesser = guesser;
this.outputPrinter = outputPrinter;
}
?????????start?????????answerGenerator?????????4λ????
public void start() {
String answer = answerGenerator.generate();
}
????????????????????????????б仯?????????????????
java.lang.AssertionError: not all expectations were satisfied
expectations:
expected once?? already invoked 1 time: answerGenerator.generate(); returns "1234"
expected once?? never invoked: inputCollector.guess(); returns "1234"
expected once?? never invoked: guesser.verify("1234"); returns "4A0B"
expected once?? never invoked: outputPrinter.print("You win"); returns a default value
at org.jmock.lib.AssertionErrorTranslator.translate(AssertionErrorTranslator.java:20)
at org.jmock.Mockery.assertIsSatisfied(Mockery.java:196)
at com.swzhou.tdd.guess.number.GameFacts.should_play_game_and_win(GameFacts.java:54)
??????????????inputCollector?????????????
public void start() {
String answer = answerGenerator.generate();
String guess = inputCollector.guess();
}
??????????????????????????????????????????????
java.lang.AssertionError: not all expectations were satisfied
expectations:
expected once?? already invoked 1 time: answerGenerator.generate(); returns "1234"
expected once?? already invoked 1 time: inputCollector.guess(); returns "1234"
expected once?? never invoked: guesser.verify("1234"); returns "4A0B"
expected once?? never invoked: outputPrinter.print("You win"); returns a default value
at org.jmock.lib.AssertionErrorTranslator.translate(AssertionErrorTranslator.java:20)
at org.jmock.Mockery.assertIsSatisfied(Mockery.java:196)
at com.swzhou.tdd.guess.number.GameFacts.should_play_game_and_win(GameFacts.java:54)
?????????????????????е????????μ???????????
public void start() {
String answer = answerGenerator.generate();
String guess = inputCollector.guess();
String result = "";
do {
result = guesser.verify(guess?? answer);
} while (result != "4A0B");
outputPrinter.print("You win");
}
??????????????????????????????Υ??С???????
????????????????????С??????????С???????????????????
????1??????????????????????????????????????????
????2????????????????????????Game.start????
????3????????ù???Э???????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ɡ???????????????д????????????????????????????翼?????????μ???????????????????????????????????????СЭ?????У???????TDD???????????Э?????????????Σ????????????????????????????????
??????

???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11