рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рддреАрд╕рд░рд╛ рд▓реЗрдЦ рдФрд░ рдореБрдЦреНрдп рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдПрдХ рдЫреЛрдЯреА рд╢рд╛рдЦрд╛ - рдЗрд╕ рдмрд╛рд░ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдФрд░ рдЙрд╕рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдПрдХ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдзрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Hixon10 рдЯрд┐рдкреНрдкрдгреА рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рдЬреИрд╕реЗ рдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬред рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рднреА рд╢рд╛рдорд┐рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА -рдбреЗрдЯрд╛рдмреЗрд╕-рд╕реНрдкреНрд░рд┐рдВрдЧ-рдЯреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдФрд░ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдФрд░ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдмреЗрд╢рдХ, рд░реЗрдбреАрдореЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗрдирд╛ рд╕рд╣реА рдФрд░ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд▓рдХреНрд╖реНрдп рдХреЛ рд╕рдордЭрдирд╛ рд╣реИ рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ , рддреЛ рдпрд╣ рд╕реНрд╡рдпрдВ рдХреЛ рдЙрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рдорд╣рд╛рди рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдХреЗ рд╣реБрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВред рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдк рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдЖрдкрдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдВрджрд░ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ "рдЬрд╛рджреВ" рдХреЗ рдорд┐рдердХ рдХреЛ рдордЬрдмреВрдд рдХрд░рдиреЗ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдмрд╛рд░ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдореИрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреЛрд░реНрдЯ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдЕрд╕реНрдерд╛рдпреА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рдж рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рдерд╛рдЧрдд, рдереЛрдбрд╝рд╛ рд╕рд┐рджреНрдзрд╛рдВрддред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдмрд┐рди, рд╕рдВрджрд░реНрдн, рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдореИрдВ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рд▓реЗрдЦ рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ / рд╣реИрдмрд░ рдХрд╛ рд░рд┐рд╡рд░реНрд╕ рд╕рд╛рдЗрдб ред
рд╡рд╕рдВрдд рдкрд░реАрдХреНрд╖рдг
рд╕реНрдкреНрд░рд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдЦрдВрдб рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдмрд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЪрд╛рд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИрдВ:
- рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдкреНрд░рд┐рдВрдЧ IoC рдХрдВрдЯреЗрдирд░реЛрдВ рдФрд░ рдЙрдирдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВ
- рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░реЗрдВ
- рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрди рдкреНрд░рджрд╛рди рдХрд░реЗрдВ
- рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ
рдореИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧреА рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддреЗрдВ рдХрд╣рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдореИрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдирд┐рдЪреЛрдбрд╝ рдФрд░ рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдЬреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВред
рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ

рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
- рдЯреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ (JUnit 4 рдХреЗ рд▓рд┐рдП
SpringExtension
рдФрд░ JUnit 5 рдХреЗ рд▓рд┐рдП SpringExtension
) рдЯреЗрд╕реНрдЯ рд╕рдВрджрд░реНрдн рдмреВрдЯрд╕реНрдЯреНрд░реИрдкреЗрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ TestContext
рдмрдирд╛рддрд╛ рд╣реИ - рдореБрдЦреНрдп рд╡рд░реНрдЧ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИTestContext
рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реБрдХ TestContext
рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ рд▓реЗрди-рджреЗрди рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд░реЛрд▓рдмреИрдХ), рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ (рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рд╕рднреА @Autowired
рдлрд╝реАрд▓реНрдб) рдФрд░ рд╕рдВрджрд░реНрдн рдмрдирд╛рддрд╛ рд╣реИ- рд╕рдВрджрд░реНрдн рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрджрд░реНрдн рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдУрд╡рд░рд▓реИрдк рдХрд┐рдП рдЧрдП рдЧреБрдг, рдкреНрд░реЛрдлрд╛рдЗрд▓, рдбрд┐рдмреНрдмреЗ, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░, рдЖрджрд┐) рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░рддрд╛ рд╣реИред
- рд╕рдВрджрд░реНрдн рдХреЛ рдПрдХ рд╕рдордЧреНрд░ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрд╡реЗрджрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ - рдбрд┐рдмреНрдмреЗ, рдЧреБрдг, рдЖрджрд┐ рдХрд╛ рдПрдХ рд╕реЗрдЯред
- рдЯреЗрд╕реНрдЯ рдЪрд▓рддрд╛ рд╣реИ
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рднреА рдЧрдВрджреЗ рдХрд╛рдо, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, spring-test
рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ Spring Boot Test
рдмрджрд▓реЗ рдореЗрдВ, рдХрдИ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдкрд░рд┐рдЪрд┐рдд @DataJpaTest
рдФрд░ @SpringBootTest
, рдЙрдкрдпреЛрдЧреА TestPropertyValues
рдЬреИрд╕реЗ TestPropertyValues
рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрдн рдЧреБрдг рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реЗрдм-рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╛ рдореЙрдХ-рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ (HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдирд╛) рдХреЗ рд░реВрдк рдореЗрдВ, @MockBean
, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдкреЛрдВрдЫрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рд╕рдВрджрд░реНрдн рдХреИрд╢рд┐рдВрдЧ
рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╢рд╛рдпрдж рдмрд╣реБрдд рдЕрд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╖рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬреЛ рдХрдИ рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реИ рдФрд░ рдЧрд▓рддрдлрд╣рдореА рд╣реИ рд╕рдВрджрд░реНрдн рдХреИрд╢рд┐рдВрдЧ (рджреЗрдЦреЗрдВ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 5 рджреЗрдЦреЗрдВ) рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмреАрдЪ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЧрддрд┐ рдкрд░ рдЗрд╕рдХрд╛ рдкреНрд░рднрд╛рд╡ред рдПрдХ рд▓рдЧрд╛рддрд╛рд░ рдЯрд┐рдкреНрдкрдгреА рдореИрдВ рд╕реБрдирддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг "рдзреАрдореА" рд╣реИрдВ рдФрд░ "рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдЪрд▓рд╛рддреЗ рд╣реИрдВред" рддреЛ, рд╡реЗ рджреМрдбрд╝рддреЗ рд╣реИрдВ - рд▓реЗрдХрд┐рди рд╣рд░ рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд░реНрдн (рдпрд╛рдиреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЗрдВрд╕) рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рдд рдпрджрд┐ 10 рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА 10 рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ "рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди" рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ? рд╕реНрдкреНрд░рд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕реЗрдо, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрдХреНрд╖рд╛рдПрдВ, рдкреНрд░реЛрдлрд╛рдЗрд▓, рдЧреБрдг рдЖрджрд┐ рдХрд╛ рд╕реЗрдЯ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреЗ рджреЛ рдкрд░реАрдХреНрд╖рдг рдПрдХ рд╣реА рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
@SpringBootTest @ActiveProfiles("test") @TestPropertySource("foo=bar") class FirstTest { } @SpringBootTest @ActiveProfiles("test") @TestPropertySource("foo=bar") class SecondTest { }
рдХреИрд╢ рдореЗрдВ рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 32 рддрдХ рд╕реАрдорд┐рдд рд╣реИ - рдЖрдЧреЗ, LRSU рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдХреИрд╢ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХреИрд╢ рд╕реЗ рд╕рдВрджрд░реНрдн рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдПрдХ рдирдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдХреЛ рдХреНрдпрд╛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
@DirtiesContext
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рдЕрдЧрд░ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрджрд░реНрдн рдХреИрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ "рд░реАрд╕реЗрдЯ" рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
@MockBean
рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдХрд▓реНрдк, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рднреА рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ - @MockBean рдЕрд╕рд▓реА рдмреАрди рдХреЛ рдПрдХ рдореЙрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореЙрдХрд┐рдЯреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ)ред рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реЗрдо рдХреЗ рд╕реЗрдЯ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд╕рдВрджрд░реНрдн рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдХреЛ рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЛ рд╕рдВрджрд░реНрдн рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдВ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ:
@SpringBootTest @ActiveProfiles("test") @TestPropertySource("foo=bar") class FirstTest { } @SpringBootTest @ActiveProfiles("test") @TestPropertySource("foo=bar") class SecondTest { @MockBean CakeFinder cakeFinderMock; }
@TestPropertySource
рдХреЛрдИ рднреА рд╕рдВрдкрддреНрддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╢ рдХреБрдВрдЬреА рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд╕рдВрджрд░реНрдн рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
@ActiveProfiles
рд╕рдХреНрд░рд┐рдп рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрджрд▓рдиреЗ рд╕реЗ рдХреИрд╢ рдкрд░ рднреА рдЕрд╕рд░ рдкрдбрд╝реЗрдЧрд╛ред
@ContextConfiguration
рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЛрдИ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рдирдпрд╛ рд╕рдВрджрд░реНрдн рднреА рдмрдирд╛рдПрдЧрд╛ред
рд╣рдо рдЖрдзрд╛рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рддреЛ рдЕрдм рдЗрд╕ рд╕рд╛рд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдЙрддрд╛рд░ рджреЛ рд╕рдордЭреЗрдВ рдХрд┐ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдБ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХ рднреА рд╕рд╣реА рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ:
- рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдПрдВред
- рдкреНрд░рддреНрдпреЗрдХ рдХреИрд╢реНрдб рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдЪрд▓рд╛рдПрдБ (рд╕рдВрднрд╡рддрдГ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрдЧ)ред
рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдХреЛрдИ рднреА рд╡рд┐рдХрд▓реНрдк рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, Postgres рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЬрд▓реНрджреА рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреБрдХреНрдд рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк JUnit 5 рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рд▓рд╛рдпрдмреНрд░реЗрд░реА, рд╕рдВрджрд░реНрднреЛрдВ рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬреНрдЮрд╛рди рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдп рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреЛрд░реНрдЯ рдкрд░ рдЪрд▓рд╛рдиреЗ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ред
ApplicationContextInitializer
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрдкреНрд░рд┐рдВрдЧ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
ApplicationContextInitializer
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ initialize
рд╡рд┐рдзрд┐ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рдВрджрд░реНрдн "рдкреНрд░рд╛рд░рдВрдн" рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, refresh
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ) рдФрд░ рдЖрдкрдХреЛ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдбрд┐рдмреНрдмреЗ, рдЧреБрдг рдЬреЛрдбрд╝реЗрдВред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд░реНрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
public class EmbeddedPostgresInitializer implements ApplicationContextInitializer<GenericApplicationContext> { @Override public void initialize(GenericApplicationContext applicationContext) { EmbeddedPostgres postgres = new EmbeddedPostgres(); try { String url = postgres.start(); TestPropertyValues values = TestPropertyValues.of( "spring.test.database.replace=none", "spring.datasource.url=" + url, "spring.datasource.driver-class-name=org.postgresql.Driver", "spring.jpa.hibernate.ddl-auto=create"); values.applyTo(applicationContext); applicationContext.registerBean(EmbeddedPostgres.class, () -> postgres, beanDefinition -> beanDefinition.setDestroyMethodName("stop")); } catch (IOException e) { throw new RuntimeException(e); } } }
рдпрд╣рд╛рдБ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдореНрдмреЗрдбреЗрдб рдкреЛрд╕реНрдЯрдЧреНрд░реИрдбреНрд╕ рдХреЛ yandex-qatools / postgresql- рдПрдореНрдмреЗрдбреЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░, рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдирдП рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдЖрдзрд╛рд░ рдХреЗ рд▓рд┐рдП JDBC URL, рдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕реНрдХреАрдо рдХреЗ рд▓рд┐рдП рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдПрдВ)ред рдПрдХ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдЪреАрдЬрд╝ рдХреЗрд╡рд▓ spring.test.database.replace=none
- рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдо DataJpaTest рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ H2 рдЬреИрд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ DataSource рдмрд┐рди (рдпрд╣ рдХрд╛рд░реНрдп) рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдФрд░ рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ application.registerBean(тАж)
ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдмреАрди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдпрджрд┐ рдХреЛрдИ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╡реЗрджрди рдореЗрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдВрджрд░реНрдн рдирд╖реНрдЯ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд┐рдзрд┐ postgres.stop()
рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧреА рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд░реЛрдХ рджреЗрдЧреАред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдм, рдЬрд╛рджреВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛, рдпрджрд┐ рдХреЛрдИ рд╣реЛред рдЕрдм рдореИрдВ рдЗрд╕ рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реВрдБрдЧрд╛:
@DataJpaTest @ContextConfiguration(initializers = EmbeddedPostgresInitializer.class) ...
рдпрд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рднреА, рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдПрдиреЛрдЯреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рднреА рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ!
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @DataJpaTest @ContextConfiguration(initializers = EmbeddedPostgresInitializer.class) public @interface EmbeddedPostgresTest { }
рдЕрдм @EmbeddedPostgrestTest
рджреНрд╡рд╛рд░рд╛ @EmbeddedPostgrestTest
рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреЛрд░реНрдЯ рдкрд░ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирд╛рдо рдХреЗ рд╕рд╛рде, рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЛ рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛ред
@EmbeddedPostgresTest class JpaCakeFinderTestWithEmbeddedPostgres { ... }
рдирд┐рд╖реНрдХрд░реНрд╖
рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╡рд╕рдВрдд рдореЗрдВ рдХреЛрдИ рд░рд╣рд╕реНрдпрдордп рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ "рд╕реНрдорд╛рд░реНрдЯ" рдФрд░ рд▓рдЪреАрд▓реЗ рдЖрдВрддрд░рд┐рдХ рддрдВрддреНрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЬрд╛рдирдиреЗ рд╕реЗ рдЖрдк рдкрд░реАрдХреНрд╖рдгреЛрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рдбрд╝рд╛рдХреВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдореИрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХреАрдХрд░рдг рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рддрд░реАрдХреЗ рдФрд░ рдХрдХреНрд╖рд╛рдПрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдХреЛрдИ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрджреНрдпрдкрд┐ рдпрджрд┐ рдкреВрд░реА рд╡рд┐рдзрд┐ рдХреЛрдб рдХреА 5 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╡рддрдГ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЦреАрдВрдЪрдирд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдирд╣реАрдВ рд╕рдордЭрдирд╛, рдЕрддрд┐рд░реЗрдХ рд╣реИред
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдиреНрдп рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдВрдХ