рд╢реБрдн рджрд┐рди, рджреЛрд╕реНрддреЛрдВ!
рдореИрдВ MySQL рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ
PHPUnit / DbUnit рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЫреЛрдЯреА рдкреГрд╖реНрдарднреВрдорд┐ред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреГрд╖реНрдарднреВрдорд┐
рдПрдХ рдПрдХрд▓ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, PHP рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдпрд╛ рдЬреЛ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЧрд╣рдирддрд╛ рд╕реЗ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ xUnit рдкреЛрд░реНрдЯ, PHPUnit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдЬреЛ рд╕реАрдзреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИ, PHPUnit / DbUnit рдкреНрд▓рдЧрдЗрди рдЙрдард╛рддрд╛ рд╣реИред рдЖрдЧреЗ рдореИрдВ рдЙрди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдереАрдВ рдФрд░ рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдХрд╛рдмреВ рдХрд┐рдпрд╛ред рдЬрд╡рд╛рдм рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд░реНрдгрдпреЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░ рд▓реЛрдЧреЛрдВ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдХреИрд╕реЗ DbUnit рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдпрд╣ рдЙрдкрдЦрдВрдб рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ PHPUnit рдФрд░ / рдпрд╛ DbUnit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкрджреНрдзрддрд┐ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЬрд┐рд╕реЗ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдЧрд▓реЗ рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ редрдкрд╛рда рдореЗрдВ рдЖрдЧреЗ:
- рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ - рдПрдХ рдЗрдХрд╛рдИ рдЬрд┐рд╕рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА PHPUnit рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА :: TestCase рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди;
- рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд░реНрдЧ - рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧред
рдЪреВрдВрдХрд┐ рд╕рдмрдЯреЗрдо рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рд╣реИ, рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рд╛рдзрд╛рд░рдг рдкреАрдПрдЪрдкреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдЕрдВрддрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред
рдирд┐рдпрдорд┐рдд PHP рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг
PHPUnit рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PHP рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╡рд░реНрдЧ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ PHPUnit_Framework_TestCase рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЗ рдмрдирд╛рдПрдВ, рд╢рдмреНрдж рдкрд░реАрдХреНрд╖рдг рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ (рдпрджрд┐ рдЖрдк рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ), рдФрд░ рдЙрди рдореЗрдВ рдХреЛрдб рд░рдЦреЗрдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдкрд░рд┐рдгрд╛рдореА phpunit рд╡рд░реНрдЧ рдХреЛ рд╕рдорд╛рдкреНрдд рдФрд░ рдЦрд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдХреНрд░рдо рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдФрд░ рдХреГрдкрдпрд╛ рдЙрдирдХреЗ рдХрд╛рдо рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХреЛрдб рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдХреЛрдб рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, PHPUnit_Framework_TestCase рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕реЗрдЯрдЕрдк рдФрд░ рдЯрд┐рдпрд░рдбрд╛рдЙрди рд╕рдВрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЦрд╛рд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рдХреНрд░рдорд╢рдГ рдЕрдЧрд▓реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдкреНрд░рдгрд╛рд▓реА рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред PHPUnit_Framework_TestCase рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдореЗрдВ, рдЖрдк рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдореЗрдВ рджреЛрд╣рд░рд╛рдП рдЧрдП рдХреЛрдб рдХреЛ рдЙрдирдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд╛ рдХреНрд░рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:
setUp () {/ * рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ * /}
testMethod1 () {/ * рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛ рд╡рд┐рдзрд┐ 1 * /}
рдЕрд╢реНрд░реБ () {/ * рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА * /}
setUp () {/ * рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ * /}
testMethod2 () {/ * рдкрд░реАрдХреНрд╖рд┐рдд рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ 2 * /}
рдЕрд╢реНрд░реБ () {/ * рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА * /}
...
setUp () {/ * рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ * /}
testMethodN () {/ * рдиреЗ рдХрдХреНрд╖рд╛ N рдкрджреНрдзрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ * /}
рдЕрд╢реНрд░реБ () {/ * рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА * /}
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рдВрдЧ PHP рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп PHP рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ PHPUnit_Extensions_Database_TestCase (PHPUnit_Extensions_Database_TestCase рд╡рд░реНрдЧ рдЦреБрдж рдХреЛ PHPUnit_Framat_TestCase рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ), рдЬрд┐рд╕рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЗрд╕ phpunit рдХреЛрдб рдХреЛ рдЦрд┐рд▓рд╛рдПрдВред рдХреЗрд╡рд▓ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдореЗрдВ рджреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ - getConnection () рдФрд░ getDataSet () рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DbUnit рдХреЛ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдЖрдкрдХреЛ
рдкреАрдбреАрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ), рдФрд░ рджреВрд╕рд░рд╛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЕрдЧрд▓реЗ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред DbUnit рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рдПрдХ DataSet рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдЧрд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ (рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдореЗрдВ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ), PHPUnit рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯрдЕрдк () рд╡рд┐рдзрд┐ рдХрд╣рддрд╛ рд╣реИред DbUnit рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, setUp () рд╡рд┐рдзрд┐ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдм рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИред рдЖрдо рддреМрд░ рдкрд░, рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕рдЯреЗрд╕реНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЕрдк () рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд getConnection () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЯреЗрдмрд▓ рд╕реЗрдЯ (рдбреЗрдЯрд╛рд╕реЗрдЯ) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдЬрдм рдЧреЗрдЯрдЯрд╛рд╕реЗрдЯ () рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╕рд╛рд╡рдзрд╛рди рдереЗ, рддреЛ getDataSet () рдкрджреНрдзрддрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддред рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдХреЙрд▓ рдХрд╛ рдПрдХ рд╕рдорд╛рди рдЕрдиреБрдХреНрд░рдо рдорд┐рд▓рддрд╛ рд╣реИ
setUp () {/ * рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ
рд╡рд┐рдзрд┐ getDataSet () * /}
testMethod1 () {/ * рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛ рд╡рд┐рдзрд┐ 1 * /}
рдЕрд╢реНрд░реБ () {/ * рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА * /}
setUp () {/ * рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ
рд╡рд┐рдзрд┐ getDataSet () * /}
testMethod2 () {/ * рдкрд░реАрдХреНрд╖рд┐рдд рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ 2 * /}
рдЕрд╢реНрд░реБ () {/ * рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА * /}
...
setUp () {/ * рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ
рд╡рд┐рдзрд┐ getDataSet () * /}
testMethodN () {/ * рдиреЗ рдХрдХреНрд╖рд╛ N рдкрджреНрдзрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ * /}
рдЕрд╢реНрд░реБ () {/ * рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА * /}
рдереЛрдбрд╝реА рдкрд░реЗрд╢рд╛рдиреА
рдкрд░рд┐рдЪрд╛рд▓рди рд╡рд╛рддрд╛рд╡рд░рдг: рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрдИ рджрд░реНрдЬрди рдЯреЗрдмрд▓ рд╣реИрдВ, MySQL InnoDB рдЗрдВрдЬрдиред рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрддрд░ рдкрд░ рдбреЗрдЯрд╛ рд╕реНрдерд┐рд░рддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рддрдВрддреНрд░ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
1. рдЖрдзрд╛рд░ рдЖрд░рдВрднреАрдХрд░рдг
рдкрд╣рд▓рд╛ рдЙрдкрджреНрд░рд╡ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдУрд╡рд░рд╢реИрдбреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╣реБрдЖ рдерд╛, рдореИрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╢реБрд░реБрдЖрддреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕реЗрдЯ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ рдЬреЛ рдореИрдВрдиреЗ рдмрдирд╛рдпрд╛ рдерд╛ред
DbUnit рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реБрдП, рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рдлреНрд▓реИрдЯ Xml рдПрдХ xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рдлрд╝рд╛рдЗрд▓ рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- Xml рд░рд╛рдЬреНрдп рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╕реНрд╡рд░реВрдк рд╣реИ, рдмрд╣реБрдд рдЕрдзрд┐рдХ bukaf, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ (рдЖрдк рд╢реВрдиреНрдп рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐)
- MySQL Xml рдкрд┐рдЫрд▓реЗ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдПрдХ рднрд┐рдиреНрдирд░реВрдк рд╣реИ, рдХреГрдкрдпрд╛ DbUnit рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ mysqldump рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ред
рддрд╛рд▓рд┐рдХрд╛ рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ PHPUnit_Extension_Database_TestCase рд╡рд░реНрдЧ рдХреА рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рд╣рд╛рдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ mysqldump рдХреЛ рдЪреБрдирд╛ рдФрд░ рд╣рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд░рд╡рд╛рдирд╛ рд╣реБрдЖ: рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛, рдЗрд╕реЗ xml рдореЗрдВ рдЙрддрд╛рд░ рджрд┐рдпрд╛ рдФрд░ getDataSet () рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛:
public function getDataSet() { return $this->createMySQLXMLDataSet('db_init.xml');
... рдФрд░ рдкрд╣рд▓рд╛ рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдиреНрд╣реЛрдВрдиреЗ рддреБрд░рдВрдд рдПрдХ рдЕрдкрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдкрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
DbUnit рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдЦреБрджрд╛рдИ рдХреЗ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ PHPUnit_Extensions_Database_TestCase :: setUp () рд╡рд┐рдзрд┐, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЙрд╕ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ PHPUnit_Extensions_Database_Operation_Factory_Factory_IN_LE_INSIT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред CLEAN_INSERT рдСрдкрд░реЗрд╢рди, рдмрджрд▓реЗ рдореЗрдВ, рдХрд╛рд░рдЦрд╛рдиреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдПрдХ рдореИрдХреНрд░реЛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рджреЛ рдСрдкрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: PHPUnit_Extensions_Database_Operation_Factory :: TRUNCATE рдФрд░ PHPUnit_Eatension_Database_Operation_Factory :: INSERTред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕рдм рдХреБрдЫ рдпрд╣рд╛рдБ рдЬрдЧрд╣ рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛ - рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП TRUNCATE рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ FOREIGN KEY рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рд╕рдХреНрд░рд┐рдп рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВред
рддрдп рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: рдпрд╛ рддреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг (рдЕрдВрдзреЗрд░реЗ рдкрде) рдХреЗ рджреМрд░рд╛рди FOREIGN рдХреБрдВрдЬреА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ, рдпрд╛ Dbnit рд╕реНрд░реЛрдд рдХреЛрдб (рдкреНрд░рдХрд╛рд╢ рд▓реЗрдХрд┐рди рд▓рдВрдмрд╛ рдкрде) рдХреЛ рдзреВрдореНрд░рдкрд╛рди рдХрд░рддреЗ рд╕рдордп рдорд┐рд▓реЗ рдирдП PHPUnit_Extensions_Database_Operation_Factory :: DELETE_ALL рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдПрдХ рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж, рдЕрдВрдзреЗрд░реЗ рдкрдХреНрд╖ рдиреЗ рдореБрдЭ рдкрд░ рдХрд╛рдмреВ рдкрд╛ рд▓рд┐рдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдЕрдЦрдВрдбрддрд╛ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдирд┐рд░реНрдорд╛рдг рдХреЛрдб рдЕрднреА рднреА рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ getConnection () рдкрджреНрдзрддрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
GetConnection () рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
public function getConnection() { if (is_null($this->m_oConn)) { $oPdo = new PDO('mysql:dbname=db1;host=localhost', 'root', 'qwerty'); $this->m_oConn = $this->createDefaultDBConnection($oPdo, 'db1'); } return $this->m_oConn; }
$ m_oConn рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рд╕рджрд╕реНрдп рдЪрд░ рд╣реИ, рдЬреЛ рдкреАрдбреАрдУ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрд╡рд░рдг рд╣реИред рдФрд░ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд░реНрдЧ PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред PDO рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд▓рд╛рдЗрди $ oPdo-> рдПрдХреНрдЬреАрдХреНрдпреВрдЯ ('SET Foreign_key_checks = 0') рдЬреЛрдбрд╝рдХрд░, рдореИрдВрдиреЗ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреАред
рджрд░рдЕрд╕рд▓, рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рдЙрдореНрдореАрдж рдереА, рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдЕрд╕рдВрдЧрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд░реЗрдХ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ DELETE_ALL рдХреЗ рд╕рд╛рде TRUNCATE рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд░реНрдерд╛рддреН рдЙрдЬреНрдЬреНрд╡рд▓ рдкрде рдкрд░ рд▓реМрдЯрдирд╛ рдкрдбрд╝рд╛ред
рд╕реВрддреНрд░реЛрдВ рдХреА рдПрдХ рдФрд░ рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЖрдкрдХреЛ PHPUnit_Extensions_Database_TestCase :: setUp () рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЙрд╕рдХрд╛ рдХреЛрдб рд╣реИ:
protected function setUp() { parent::setUp();
рдФрд░ рдпрд╣рд╛рдБ getSetUpOperation () рд╡рд┐рдзрд┐ рд╣реИ:
protected function getSetUpOperation() { return PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT(); }
рдЗрд╕рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдореЗрдВ getSetUpOperation () рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
protected function getSetUpOperation() { return PHPUnit_Extensions_Database_Operation_Factory::INSERT(); }
рдореИрдВрдиреЗ TRUNCATE рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд▓реАрдирдЕрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЦреБрдж рдХреЛ рдЬреЛрдбрд╝рд╛ред рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, PHPUnit_Extensions_Database_Operation_Factory :: DELETE_ALL () рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░рд╣реАрди рдХреЙрд▓ рдореЗрдВ рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рди рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдлрд╛рдИ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛:
protected function clearDb() { $aTableNames = $this->getConnection()->createDataSet()->getTableNames(); foreach ($aTableNames as $i => $sTableName) { if (false === strpos($sTableName, 'view_')) continue; unset($aTableNames[$i]); } $aTableNames = array_values($aTableNames); $op = \PHPUnit_Extensions_Database_Operation_Factory::DELETE_ALL(); $op->execute($this->getConnection(), $this->getConnection()->createDataSet($aTableNames)); }
рдХреЛрдб рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рджреГрд╢реНрдп рдЙрдкрд╕рд░реНрдЧ view_ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред
рдпрд╣ рдХреЗрд╡рд▓ рд╕реЗрдЯрдЕрдк () рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдореЗрдВ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕рдЯреЗрд╕реНрдЯрд░ рдХреЛ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╕рд╛рдл рдХрд░ рджреЗред
protected function setUp() { $this->clearDb(); parent::setUp(); }
2. рдЯреЗрдмрд▓ рд╕реЗрдЯ рдХреА рддреБрд▓рдирд╛
рдЕрдЧрд▓реА рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реБрдИ рдЬрдм рджреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЧрдИ - рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕реАрдзреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЙрддреНрдкрдиреНрди), рдФрд░ рджреВрд╕рд░рд╛ - рд╣рд╛рде рд╕реЗ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реБрдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
$oActualDataSet = $this->getConnection()->createDataSet();
PHPUnit_Extensions_Database_TestCase :: assertDataSetsEqual рд╡рд┐рдзрд┐ рдХреЛ рджреЗрдЦрдХрд░, рдореИрдВ рдорд╛рдирд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рджреЛ рд╕реЗрдЯреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реБрдИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЬрд▓реНрджреА рдирд┐рдХрд▓рд╛ред рддреБрд▓рдирд╛ рдкрд░рд┐рдгрд╛рдо рдмрд╣реБрдд рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдереЗред рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рджреЛ рд╕рдорд╛рди рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕реЗрдЯреЛрдВ рдХреЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
рдбрд┐рдмрдЧрд░ рдиреЗ рдмрджрд▓реЗ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдкрд░реЗрд╢рд╛рдиреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рд╣реИред рдЕрдиреБрдХреВрд▓рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрдм $ рдпрд╣-> getConnection () -> createDataSet () рдХреЛ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдЯреЗрдмрд▓ рдХрд╛ рдПрдХ рдЖрдВрд╢рд┐рдХ рд╕реЗрдЯ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ (рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдкрддрд┐рдпреЛрдВ рдХрд╛ рдирд╛рдо) ред
PHPUnit_Extensions_Database_TestCase :: assertDataSetsEqual рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
public static function assertDataSetsEqual(PHPUnit_Extensions_Database_DataSet_IDataSet $expected, PHPUnit_Extensions_Database_DataSet_IDataSet $actual, $message = '') { $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($expected); self::assertThat($actual, $constraint, $message); }
рдпрджрд┐ рдЖрдк рдХреЙрд▓ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рддреБрд▓рдирд╛ рдСрдкрд░реЗрд╢рди рдХреЗ рдХрдИ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдХреЗ рдмрд╛рдж, рдпрд╣ PHPUnit_Extensions_Database_DataSet_AbstractTable :: рдореИрдЪреЛрдВ (PHPUnit_Extra_Database_DataSet_ITable $ рдЕрдиреНрдп) рдореЗрдВ рдЖрдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп, рдЙрдирдореЗрдВ рд╕реЗ рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рджреЛ DataSets рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, DataSets рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдирддреАрдЬрддрди, рдХреБрдЫ рдЬрдЧрд╣ рдкрд░ рдореБрдЦрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрдЧ github рдкрд░ PHPUnit / DbUnit рдХреЗ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рдХрдИ рдорд╣реАрдиреЗ рдкреБрд░рд╛рдирд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред
рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕реБрдзрд╛рд░ рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдЬрд▓реНрджреА рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред DbUnit рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдирд╣реАрдВ, рдЬрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЕрдиреБрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ -> рддреБрд▓рдирд╛ рдХреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдореИрдЪ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:
public function compareDataSets(PHPUnit_Extensions_Database_DataSet_IDataSet $expected, PHPUnit_Extensions_Database_DataSet_IDataSet $actual, $message = '') { $aExpectedNames = $expected->getTableNames(); $aActualNames = $actual->getTableNames(); sort($aActualNames); sort($aExpectedNames); $this->assertEquals($aExpectedNames, $aActualNames, $message); foreach ($aActualNames as $sTableName) { $atable = $actual->getTable($sTableName); $etable = $expected->getTable($sTableName); if (0 == $atable->getRowCount()) { $this->assertEquals(0, $etable->getRowCount(), $message); } else { $this->assertTablesEqual($etable, $atable, $message); } } }
рдирд┐рд╖реНрдХрд░реНрд╖
рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд DbUnit рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ DbUnit 1.1.2, PHPUnit 3.6.10 рдФрд░ MySQL 5.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдмреИрд╕рд╛рдЦрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ PHPUnit_Extensions_Database_TestCase рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрди рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЗрд╕ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред
рдПрдХ рдЕрдЪреНрдЫреЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреИрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдмрд╣реБрдд рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред