TDD??ο??
???????????? ???????[ 2012/6/25 10:50:25 ] ????????
???????????????TDD?У?????????????????????????????д??????????????????????????????????????????????????????????????????е?С???????????????????????????????????????????????????γ???????????????????????У?????????????????????????ü?????????????????????????????????????С?????????????????????TDD?????????????????
?????????????????????γ?????е???Э????С??顣?????????е????С?????????????????????飩TDD??????????????????inside-out?????????????塣???????????????????????????????????TDD????????????????????????????????Э?????????????????????塣?????????????????????????????????????????????????γ??????????ж?????????????????????????????????????????????????????????????????飬????????????????????????е??????
?????????????·??????????????е????????????????????????д?????????????????????????鼰?佻?????????????????????????????????????γ????
???????磬???????????????????????????????????????????????????????????????????4λ????????????0??9?????????6?????3????4λ?????????????????????????4λ????????????????????4λ??????????????????????xAyB??????????????x????????????г????????????λ????????y????????????г????λ?ò????????????3??????????????????????????You win??????????????????????????You lose????
??????????????С???????????ü??????????????????????????????а?????????????????????????????????????????????????????????????????????飬?????????????????????飬??????????????????????????ò??????????????????????????????????????????????????
?????e????ο?????TDD???????????????????????????????????????????????????????????TDD????????????????????????????????????????ɡ?
?????????????????????????????4λ????????????У?You win???????????
??????????д???????ɡ???????????Game????????????start????
Game game =newGame();
game.start();
????????????????????????????????????????????AnswerGenerator???????????????????????InputCollector??????????????????ж??????????Guesser?????????????????????OutputPrinter?????????????????????????????????????????mock???????????????????????Щ?????????????????JMock2??
Mockery context = new JUnit4Mockery() {
{
setImposteriser(ClassImposteriser.INSTANCE);
}
};
final AnswerGenerator answerGenerator = context.mock(AnswerGenerator.class);
????????
?????????????????Game?????????????
Game game =newGame(answerGenerator?? inputCollector?? guesser?? outputPrinter);
game.start();
?????????????????????????????????????????????????????????????????
public class AnswerGenerator {
}
public class InputCollector {
}
public class Guesser {
}
public class OutputPrinter {
}
???????????????????????Game????汾??
public class Game {
public Game(AnswerGenerator generator?? InputCollector inputCollector?? Guesser guesser?? OutputPrinter outputPrinter) {
}
public void start() {
}
}
?????????????????????????????????????????????answerGenerator???????4λ?????????????1234??
context.checking(new Expectations() {
{
one(answerGenerator).generate();
will(returnValue("1234"));
}
});
????????????????generator?????generate???????????????????????
public class AnswerGenerator {
public String generate() {
return null;
}
}
????????????????????β???1234??
context.checking(new Expectations() {
// ...
{
one(inputCollector).guess();
will(returnValue("1234"));
}
??
????????????????????inputCollector??????????guess??????
public class InputCollector {
public String guess() {
return null;
}
}
???????guesser?ж??????????????????????4A0B??
context.checking(new Expectations() {
// ...
{
oneOf(guesser).verify(with(equal("1234"))?? with(equal("1234")));
will(returnValue("4A0B"));
}
}
?????????????????guesser???????????
public class Guesser {
public String verify(String input?? String answer) {
return null;
}
}
????????????????????You win????game over??
context.checking(new Expectations() {
// ...
{
oneOf(outputPrinter).print(with(equal("You win")));
}
??
??????

???·???
??????????????????
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