ื ืืืก ืื ืืืงืืื ื ืชืื ื ืืืืงื ืืงืื ืกืืื ืขืฉืจืืช ืคืขืืื ืืื ืืืืืง ืืช ืืืฉืืื ืฉืื? ืืจืื ืืื ืืืชืื, ืื ื ืืืื ืื ืื ืืชื ืืืื ืืขืฉืืช ืืืชื.
ืืืืจื ืืกืืคืืช ืฉื ืืืืจ ืื ืชืืื ืืืคืื ืืช ืืืฉืงื ืฉื ืืืฉืืื ืื ืคืชืจืช ืขื ืคืจืืืจืื ืฉืื ืื ืืืืืงืช ืืชืืฆืืืช ืืื ืืืฆืืข ืฉืื ืืืื ืืงืื ืืืงืืจ ืฉืื. ืืคื ืฉืืื ืืืจ ืืื ืชื ืืืืืชืจืช, ืืขืืืจ ืืจืืฉื ืฉืื ื ืืขื ืืื ืืคืฉืื ืืื ืืืื
JUnit . ืื ืขืืืื ืื ืฉืืขืชื ืขื
ืืืืงืืช ืืืืืืช ืืืืื ื
ืืืืืืช , ืื ื ืืฆืืข ืืื ืืขืฉืืช ืืคืกืงื ืงืื ื ืืืืืืจ ืืช ืืืืฉืืื ืืืื, ืืืจืื ืืืื ืืฉ ืืกืคืืง ืืืืข ืืืื ืืจื ื. ืื, ืืชื ืื ืจืืฆื? ืืืื, ืืกืืจ, ืื ื ืืืฉื ืฉืื ืื ืืืคืื ืืืขืื ืืืืื ืืืืื ืื ืงืืจื. ืืจื ืืชื ืืืืข ืื ืื ืืืื ืืืืืงื ืืืื? ืืชื ืขืืฉื ืืืช ืืื ืคืขื ืฉืืชื ืืคืขืื ืืช ืืืฉืืื ืฉืื, ืืืื ืืช ืื ืชืื ืื ืืจืืฉืื ืืื ืืืฉืืื ืืช ืืชืืฆืื ืืืชืงืืืช ืขื ืื ืฉืฆืืคืืช ืืจืืืช.
ืฉืืื, JUnit ืขืืืื !
ืื ืื JUnit? ืืืชืจ
ืืจืฉืื ืฉื ืืคืจืืืงื ื ืืื ืืงืจืื ืืช ืืชืืืืจ ืืื:
JUnit ืืื ืืกืืจืช ืคืฉืืื ืืืชืืืช ืืืื ืื ืฉื ืืชื ืื ืืืืจื. ืืื ืืืคืข ืฉื ืืจืืืืงืืืจืช xUnit ืขืืืจ ืืกืืจืืช ืืืืืงืช ืืืืืืช.
ืขืืืจื ื, ืืฉืืขืืช ืืืืจ ืืื ืืืืืืช ืืืชืื ืืืืงืืช ืืขืืฆืืืช ืืืืืื ืฉืืฉืืืืช ืฉืืื ืืคืขืื ืืืื ืืจืืงืฆืื ืขื ืืชืืื ืืช ืฉืื ื, ืืืฉืืืช ืืช ืืชืืฆืื ืืืชืงืืืช ืขื ืืืคื ืื ืืืืืืืข โโืื ื ืื ืื ืืื ื ืชืืืืืช. ืืื ืืืืื ืืช ืืขืืงืจืื, ืฉืงืื ืืืืื ืคืฉืืื. ื ื ืื ืฉืืฉ ืื ื ืืืืงืช ืขืืจ, ืฉืืืช ืืืฉืืืืช ืฉืื ืืืงืืช ืฉื ื ืืฉืชื ืื ืืกืื
int ืืืืืืจื ืืช ืืกืืื ืฉืืื:
ืื ืืคืื ืงืฆืืื ืืืืช ืฉื ื ืกื ืืืืืง. ืืืจืื ืืืื, ื-IDEA ืืืืื ืขืืื ื ืืืจ ืืฉ ืืช ืื ืื ืฉืืชื ืฆืจืื ืืื ืืืฆืืจ ืืืืืจืืช ืืืื ืื, ืื ืื ืฉืื ืื ื ืฆืจืืืื ืื ืืืงื ืืช ืืกืื ืืฉืืจืช ืืฆืืจืช ืืืืชื, ืืงืฉ "Alt + Enter" ืืืืจ "ืฆืืจ ืืืื" ืืชืคืจืื ืืืงืฉืจ: ืืืืจ ืฉืชืฆืืื
ืืืื ืืืื ืืืฆืืจ ืืืื, IDEA ืืฆืืขื ืืืืืจ ืกืคืจืืืช ืืืืงื (ืืืืืจ ืื ืื ื ืืฉืชืืฉ ื-JUnit4; ืืื ืฉืฉืืขืืจื ืืกืคืจืืื ืืชืืืจื ืืคืจืืืงื, ืืฉ ืืืืืฅ ืขื ืืคืชืืจ "ืชืืงืื"), ืฉืืืืช ืืืืืงื ืืขืื. ืืคืฉืจืืืืช.
ื-IDE ืืฆืืจ ืชืื ืืช ืืืืงืช ืืืืงื: ClassName = TestClassName + "Test" MethodName = "test" + TestMethodName
ืื ืื ื ืจืง ืฆืจืืืื ืืืื ืืช ืืืฃ ืืฉืืื.
ืื ืฉืืืื ื "ืืฆืืจืืช" , ืฉืืืืช ืืืกืืคืงืืช ืขื ืืื JUnit , ืืขืืจื ืืื . ืืฆืืจื ืคืฉืืื, ืขืืืืชื ื ืจืืืช ืื: ืืชืืฆืื ืืฆืคืืื ืืืชืืฆืื ืฉื ืืงืจืืื ืืฉืืื ืื ืืืงืช ืืืขืืจืืช ืืฉืืืช .assert*, ืืืขืื ื ืืืืช, ื ืืชื ืืืืกืืฃ ืืืืขืช ืืกืืจ ืืคืจืืืจ ืจืืฉืื. ืื ืืคืจืืืจืื ืืื ื ืชืืืืื ืืืืื ืืืืืงื, ืชืงืืื ืืืืข ืขื ืื. ืืชื ืืืื ืืืคืขืื ืืืืงื ืืืืงื ืืืืฆืืข ืืืืืง ืืื ืืืืงื ืจืืืื, ืื ื ืืขืืืฃ ืืืฉืชืืฉ ืืฉืืืื ืืืงืฉืื Ctrl+Shift+F10
ืืื ื ืคืจื ืืช ืืืฉืืื
ืืชืืืืจืื, ืืื ืคืฉืื ืืืคื, ืืื ืืืงืฉืจ ืฉื ืืืืืื ืืืืฆืขืช, ืื ืื ืืืฉ ืืืจืื; ืื ืื ื ืืืืืื ืืกืืื ืขื ืืืืฉื ืฉืืืกืืฃ ืฉื ื ืืกืคืจืื. ืื ืื ื ืืชืขื ืืื ืื ืืืชืจ ืืื ืืืืจืื ืืกืชืืจื ืขื ืืขืืืช ืืืืชืืืช ืฉืืคืชืจื ืขื ืืื ืชืืืืื JavaRush; ืืืืืื, ืื ื ืืฆืืข ืืงืืช ืืช ืืจืื ืืืืืื05.lesson12.bonus03.
/* ืืขืื ืืืืืืจืืชืืื ืืชืื ืชืืื ืืช ืฉ: 1. ืืื ืืกื ืืช ืืืกืคืจ N > 0 ืืืืกืืฃ 2. ืืื ืืื ืืกื N ืืกืคืจืื ืืืืกืืฃ 3. ืืฆืืื ืืช ืืืงืกืืืื ืฉื N ืืืกืคืจืื ืฉืืืื ื. */
ืื ืื ื ืฆืจืืืื ืืืชืื ืฉืืืฉื ืืืื ืื, ืขืืืจ ืืกืคืจืื ืืืืืืื, ืฉืืืืืื ืืงืืืฆื ืืขืืจืืช.
ืืื ืฉื ืื ืก ืืชืื ืืืขืจ...
ืืื ืืืืืช ืื ื ืืื ืืคืชืขืืช:
public class UtilApp { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); //ะฝะฐะฟะธัะธัะต ะทะดะตัั ะฒะฐั code int n; int maximum; /* ะะพะฝะตัะฝะพ ะถะต ั ะฝะต ะฑัะดั ัะฐะทะผะตัะฐัั ัะตัะตะฝะธะต ะทะฐะดะฐัะธ ;) ะะพะด ะฟัะธะฒะตะดะตะฝะฝัะน ััั ะฟะตัะตัะฐะฑะพัะฐะฝ ะดะปั ะฝะฐะณะปัะดะฝะพััะธ, ะธ ะฝะต ะฒ ะบะพะตะผ ัะปััะฐะต ะฝะต ะพะทะฝะฐัะฐะตั ััะพ ะพะฝ ะดะพะปะถะตะฝ ะฟัะธัััััะฒะพะฒะฐัั ะฒ "ะฟัะฐะฒะธะปัะฝะพะผ ัะตัะตะฝะธะธ" */ System.out.println(maximum); } }
- ืืืืืืงื ืฉื ืืชืืื ืืช ืืืืงืืช ืืฉืืืช main()
- ื ืชืื ื ืืืงืืจ ืืื ื ืืืขืืจืื ืืฉืืื, ืืื ืืืื ืื ืืืืงืืืช.
- ืืฉืืื main() ืื ืืืืืจื ืืช ืืชืืฆืื, ืืื ืืืฆืืื ืืืชื ืืงืื ืกืืื.
ืื ืื ืงืืื ืืจืืฉืื ื ืื ืืขืืืชืืช ืืืืืื (ืื ืื ื ืืืืืื ืืงืจืื ืืฉืืืช main() ืืจืืื), ืื ืืฉืชืืื ืืืืืช ืืืืฆืืช ืืืชื ื ืืืืื ืก ืืขืืืง ืื ืืฉื ืืืืืฅ ืืช ืืืื ืฉืื ื. ืืฆืืชื ืืกืคืจ ืคืชืจืื ืืช ืืืขืื:
- ืืขืืจืช ืืืืืืื ืืืฆืืืช ืืืงืกืืืื ืืฉืืื ื ืคืจืืช.
- ืืชืจืื ืืช: ืืืฉื ื ืืื ื ืืืื ืืื ืฉื refactoring
- ืืกืจืื ืืช: ืืชืืื ื ืืืืืืช ืืงืื, ืืื ืื ืืืืชืจืื, ืืคืืืช ืืชืืืกืฃ ืืขืจื ืื ArrayList (ืชืืื ืืืขื ืืืฆืืข...). ืจืง ืืื ืื ืื ืืืฆืืืช ืืืงืกืืืื ื ืืืง; ืงืื ืืคืื ื ืชืื ืื ืืื ื ื ืืืงืื.
- ืืชืืืช ืขืืืคืืช ืขืืืจ System.in/System.out.
- ืืชืจืื ืืช: ืื ืื ื ืื ืืฉืชืืฉืื ืืกืคืจืืืช ืฉื ืฆื ืฉืืืฉื.
- ืืกืจืื ืืช: ืืฉืืื ืืื ื ืืืืขื ืืืชืืืืื. ืืืืจืืืืช ืืืืกืืช ืฉื ืืืฉืื ืืืืืงื; ืืืืช ืืงืื ืืืืืงื ืขืฉืืื ืืืืืช ืืืืื ืืืชืจ ืืืฉืจ ืืืฉืืื ืื ืืืงืช.
- ืฉืืืืฉ ืืกืคืจืืืช ื ืืกืคืืช ืืืืื ืื.
- ืืชืจืื ืืช: ืงืื ื ืงื ืืืืื ืื, ืงืืืช ืืืกืืช ืืืชืืืช ืืืื. ืงืื ืืืงืืจ ืฉื ืืืืืงื ืื ืืืงืช ืื ืืฉืชื ื.
- ืืกืจืื ืืช: ืฆืจืื ืืืืจ ืกืคืจืืืช ืฉื ืฆื ืฉืืืฉื ืืคืจืืืงื.
ืืืขื ืืืืช, ืืื ืืืืชื ืืช ืืืคืฉืจืืช ืืฉืืืฉืืช, ืื ืืืื ื ื ืกื ืืืืฉื ืืืชื.
ืืืื ืืขืจืืช
ืืืคืืฉ ืงืฆืจ ืืืืื ืืืชื ืืขืืื
http://stefanbirkner.github.io/system-rules/ , ืืืื ืืชืืจืจ ืฉืื ืื ืฉืื ื ืฆืจืื.
ืืืกืฃ ืืืื JUnit ืืืืืงืช ืงืื ืืืฉืชืืฉ ื-java.lang.System.
ืื
ืืืื ื ืืจืื ืืช ืืกืคืจืืื . ืืืจื ืืช ืกืคืจืืืช
Commons IO ืื ืืจืฉืช ืืื ืฉืืืงื ืืืขืจืืช ืืคืขืื . ืื ื ืืืืจืื ืืช ืฉืชื ืืกืคืจืืืช ืืคืจืืืงื ืฉืื ื (ืงืืืฅ -> ืืื ื ืคืจืืืงื -> ืกืคืจืืืช -> + -> ื'ืืืื) ืืืชืืืืื ืืคืกื: ืืืืจ ืืืฉืงื, ืืืฉืืื ืฉืื ื ืืืงืฉืช ืืื ืืืืื ืืกืคืจืื N+1 ืืืืกืืฃ, ืืืฉืจ ืืืกืคืจ ืืจืืฉืื ืืืืจ ืืื ืืื ืืกืคืจืื ืืืื ืืืจืื. ื-System Rules, ืืืืืงื TextFromStandardInputStream ืืฉืืฉืช ืืืืจืืช ืืื. ืืชืืืื, ืขืืื ื ืืืืกืืฃ ืฉืื ืืกืื ืื ืืืืืงืช ืืืืืงื ืฉืื ื ืืืกืื ืืืชื ืืืืืืจ @Rule:
@Rule public final TextFromStandardInputStream systemInMock = emptyStandardInputStream();
ืืืืจ ืืื, ืืฉืืจืืช ืืฉืืืช ืืืืืงื ืื ื ืืฆืืื ืื ืืช ืื ืชืื ืื ืืืจืืฉืื:
systemInMock.provideText("4\n2\n6\n1\n3\n");
ืืคื ืฉืืชื ืืืื ืืจืืืช, ืืืกืคืจืื ืืืขืืจืื ืืฆืืจืช ืืงืกื ืืืืคืจืืื ืขื ืืื ืืงืฃ ืืืจืืืืช "\n". ืขื ืกืื ืื, ืืกืชืืจ ืฉ-N ืืืื ืฉืืื ื-4, ืื ืืคืฉ ืืช ืืืงืกืืืื ืืืืกืคืจืื {2, 6, 1, 3}. ืืืืจ ืืื, ืขืืื ื ืืืฆืืจ ืืืคืข ืฉื ืืืืืงื ืื ืืืงืช ืืืงืจืื ืืืชืืื main() . ืืชืืื ืืช ืฉืื ื ืงืืจืืช ืืช ืื ืชืื ืื ื-systemInMock, ืืขืืืช ืืืชื ืืืืคืืกื ืืช ืืชืืฆืื, ืืื ืื ืฉืขืืื ื ืืขืฉืืช ืืื ืืงืจืื ืืืชื ืืืืฉืืืช ืืืชื ืืชืงื. ืืฉื ืื, ืืืื ืืืขืจืืช ืืกืคืงืื ืื ื ืืช ืืืืืงื StandardOutputStreamLog. ืื ื ืืืกืืคืื ืฉืื ืืืกืื ืฉืฆืืื:
@Rule public final StandardOutputStreamLog log = new StandardOutputStreamLog();
ืืชื ืืืื ืืงืจืื ืืช ืื ืชืื ืื ืืืืืคืกืื ืืฉืืืช .getLog(), ืืขืื ืฉืืชื ืฆืจืื ืืงืืช ืืืฉืืื ืืช ื ืืืืืชื ืฉื ืชืืื ืฉืืจื ืืืฉื, ืืืคืฉืจืืืืช ืืกืืคืืืช ืืืืืืช ืืืืืช ืื:
assertEquals("{2, 6, 1, 3}, max = 6", "6", log.getLog().trim()); // or assertEquals("{2, 6, 1, 3}, max = 6", "6\r\n", log.getLog());
ืืื ืืืืงืืช, ืขื ืื ืช ืืืื ืข ืืฉืืืืช ื ืชืื ืื, ืขืืื ืื ืงืืช ืืืื
log.clear();
ืืืงืกื ืืืื ืฉื ืืืชืช ืืืืื ืฉืื:
import org.junit.Rule; import org.junit.Test; import org.junit.contrib.java.lang.system.StandardOutputStreamLog; import org.junit.contrib.java.lang.system.TextFromStandardInputStream; import static org.junit.Assert.*; import static org.junit.contrib.java.lang.system.TextFromStandardInputStream.emptyStandardInputStream; public class UtilAppTest { @Rule public final TextFromStandardInputStream systemInMock = emptyStandardInputStream(); @Rule public final StandardOutputStreamLog log = new StandardOutputStreamLog(); @Test public void testAddition() throws Exception { systemInMock.provideText("4\n2\n6\n1\n3\n"); UtilApp utilApp = new UtilApp(); utilApp.main(new String[]{}); assertEquals("{2, 6, 1, 3}, max = 6", "6", log.getLog().trim()); systemInMock.provideText("5\n-100\n-6\n-15\n-183\n-1\n"); log.clear(); utilApp.main(new String[]{}); assertEquals("{-100, -6, -15, -183, -1}, max = -1", "-1", log.getLog().trim()); systemInMock.provideText("3\n2\n0\n-1\n"); log.clear(); utilApp.main(new String[]{}); assertEquals("{2, 0, -1}, max = 2", "2", log.getLog().trim()); } }
ืื ืื ื ืืฉืืงืื ืื ืื ืื.
-=!!! ืืฉืื!!!=- ืืืืจ ืื ืืกืืคืง ืืืืจืืช ืืืืข ืืืื; ืื ื ืื ืืืืื ืืืืงื ืืืฆืืืช ืฉื ืืืฉืืื ืืฉืจืช ืื ืืฉ ืืืืงื ืืืฆืื ืืช ืืืืืื ืขื ืืืฉืืื. ืืคื ื ืฉืืืืช ืืฉืืื ืืืืืืช ืืฉืจืช, ืืกืจ ืื ืืืจ ืืจ: ืงืืฆืื ืืืืชืจืื, ืืืืงืืช ืืืืชืจืืช, ืงืื ืฉืืืื. ืกืืื ืืืฆืื ืฉื ืืืืืงืืช ืฉืืฆืจืช ืืื ื ืืืืื ืกืืื ืืืฆืื ืฉื ืืืืืงืืช ืืฉืจืช. ืืืืื ื ืื ืืขืกืชื ืืช ืืืืืจ ืืชืืืืจืื: ืชืืจืช ืืืืงืช ืืืืืืช, ืืขืจืืช JUnit, ืืขื ื ืืื', ืื ืืืืืจ ื ืืฆื ืืงืืฉืืจืื ืืืืคืืขืื ืืืงืกื. ืืืื ืืฉ ืื ืืจืืื ืืฉืื ืืืืื ืืฉืืืืช, ืืฉืื ืืืื ืืื ืืืชื ืืืขืจืืช.
GO TO FULL VERSION