38Pこれにテストケースを仕掛けてみると・・・public class A{public void x() {B b = new B();b.y();}}public class B {public void y() {C c = new C();c.z();}}public class C {public void z() {DB操作とか}}TestCaseA(A, B, Cの複合テスト)Class AにテストケースつくるとB, Cも必ずくっついて来て単独テストにならない。TestCaseB(BとCの複合テスト) TestCaseC(これはまだ単独)
41PDI(JavaでSpringFramworkの場合)public class AimplimplementsA {@Autowiredprivate B b;public void x() {b.y();}}public class Bimplimplments B {@Autowiredprivate C c;public void y() {c.z();}}public class Cimplimplements C {public void z() {DB操作とか}}実装クラスとインタフェースを分離、コール先のインタフェースのみ認識し、実装インスタンス(Dependency)は外部から注入(Injection)。
42.
42Pこれにテストケースを仕掛けてみると・・・public class AimplimplementsA {@Autowiredprivate B b;public void x() {b.y();}}今まではA単独のテストができなかったが、依存するBをモック化することでテストしたい処理だけに対して確認を行えるようになる。class TestCaseA {def testA() {def a = new Aimpl()//モック注入a.b = Mock(B.class)//テスト実行、asserta.x()}}