????EasyMock ?????????????????????????
????EasyMock.anyInt()
????EasyMock.anyShort()
????EasyMock.anyByte()
????EasyMock.anyLong()
????EasyMock.anyFloat()
????EasyMock.anyDouble()
????EasyMock.anyBoolean()
?????????????????????????? EasyMock.lt(x) ????С?? x ???κ????????? EasyMock.gt(x) ??????? x ???κ????
???????????????????????????????????????????????????????????????????????б???????????嶨??????????????????????κ????????????????????????????????????????EasyMock.anyInt()??EasyMock.matches() ?? EasyMock.eq() ??????????????????????
???????? mock ???????
????EasyMock ????????????????????????????????????????????????????????????????Щ???????????????????Щ???????????????£???????????顣???????????????????????β???? EasyMock.verify(mock)?????磬??? toEuros() ?????????ε???getRate()???嵥 6 ??????
?????嵥 6. ??????????? getRate() ???

 

public void testToEuros() throws IOException {
Currency expected = new Currency(3.75?? "EUR");
ExchangeRate mock = EasyMock.createMock(ExchangeRate.class);
EasyMock.expect(mock.getRate("USD"?? "EUR")).andReturn(1.5);
EasyMock.replay(mock);
Currency actual = testObject.toEuros(mock);
assertEquals(expected?? actual);
EasyMock.verify(mock);
}
????EasyMock.verify() ????????Щ??????????????????????
????Normal — EasyMock.createMock()?????????????????????????????????????????????????Щ?????????????δ??????????2???????
????Strict — EasyMock.createStrictMock()??????????????????????????????????????????????δ??????????2???????
????Nice — EasyMock.createNiceMock()??????????????????????????????????????????????δ??????????? ???2???????Nice mock ??????????? mock ?????????????????????????????????? 0??????????????????? false????????????????? null??
?????????÷??????????????????????????????????塣???磬???? org.xml.sax.ContentHandler ??????????????? XML ???????????????????????????????????????????? ContentHandler ???????????????磬?????嵥 7 ?е?? XML ?????
?????嵥 7. ???? XML ???
????<root>
????Hello World!
????</root>
???????? SAX ?淶???????????????????????e????′????????Щ??????
????setDocumentLocator()
????startDocument()
????startElement()
????characters()
????endElement()
????endDocument()
??????????????????????? setDocumentLocator() ???????????????????????ε??? characters()??????????????ε????д????????????????????????????????????????????????????嵥 7 ?????????????????????????????? XML ???????????? EasyMock ????????????????嵥 8??
?????嵥 8. ???? XML ??????
import java.io.*;
import org.easymock.EasyMock;
import org.xml.sax.*;
import org.xml.sax.helpers.XMLReaderFactory;
import junit.framework.TestCase;
public class XMLParserTest extends TestCase {
private  XMLReader parser;
protected void setUp() throws Exception {
parser = XMLReaderFactory.createXMLReader();
}
public void testSimpleDoc() throws IOException?? SAXException {
String doc = "<root>  Hello World! </root>";
ContentHandler mock = EasyMock.createStrictMock(ContentHandler.class);
mock.setDocumentLocator((Locator) EasyMock.anyObject());
EasyMock.expectLastCall().times(0?? 1);
mock.startDocument();
mock.startElement(EasyMock.eq("")?? EasyMock.eq("root")?? EasyMock.eq("root")??
(Attributes) EasyMock.anyObject());
mock.characters((char[]) EasyMock.anyObject()??
EasyMock.anyInt()?? EasyMock.anyInt());
EasyMock.expectLastCall().atLeastOnce();
mock.endElement(EasyMock.eq("")?? EasyMock.eq("root")?? EasyMock.eq("root"));
mock.endDocument();
EasyMock.replay(mock);
parser.setContentHandler(mock);
InputStream in = new ByteArrayInputStream(doc.getBytes("UTF-8"));
parser.parse(new InputSource(in));
EasyMock.verify(mock);
}
}

 

??????????????????????ɡ?????????????? strict mock??????????????????????磬???????????????? startDocument() ?????? endDocument()??
??????????????????з????????? void??????ζ?????????????????????? EasyMock.expect()????? getRate() ???????????EasyMock ?????????? “???” ?????????????????????????????? void ????Ч??????????????????? mock ????? void ???????? EasyMock ????????????????????????????????? mock ??????????????? EasyMock.expectLastCall()???????????????????????????κ? String??int ?????顣???????? EasyMock.eq() ??????????????????????в??????????
?????嵥 8 ??? EasyMock.expectLastCall() ?????????????????????????????£???????????????????Ρ???????????????.times(0?? 1) ?? setDocumentLocator() ?????????????????????????????????????λ???Ρ??????????????????????????????????????κη?Χ?????? 1-10 ?Ρ?3-30 ?Ρ????? characters()?????????????????????????Σ?????????????????????Σ??????????? .atLeastOnce()?????????? void ???????????????????? times(0?? 1) ?? atLeastOnce()????????????Щ???????? void???????????? EasyMock.expectLastCall() ?????????
?????????????? characters() ?????????? EasyMock.anyObject() ?? EasyMock.anyInt()???????????????? ContentHandler ????????????????
????mock ???????
?????б????? EasyMock ????????????д?? mock ????????? EasyMock ???????????????д??????????????Щ????????磬???? ?嵥 3???????д???????????????? mock ???????????????????????? EasyMock ??????????????????á?????????????????????????????????? org.w3c.dom.Node??25 ?????????? java.sql.ResultSet??139 ???????????????????????????????? mock ???EasyMock ??????????????????????????????????
???????????????棺??? mock ??????????????????????????????滻? mock?????????????????????????£?????????????????????滻? mock ???????????????????????????????????????????????????????п????????? bug???????????滻? mock ????????????????????? bug?????κ?????£?mock ????????????????????????????????????????????????mock ??????????????????????????????????????????????????????????в????????? mock ???в???????????????????