рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдирдХрд▓реА рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди

рдЬрдм рднреА рдкрд░реАрдХреНрд╖рдг рд░рдгрдиреАрддрд┐рдпреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ - рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЛрдб рдХреЗ рдХрд╛рд░рдг рдЬреЛ рдореЛрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓реЗ рдореВрдХ рдХреЗ рдЬреЛрдЦрд┐рдо рднреАред

рддреЛ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдореЛрдХ рдХреЗ рддреБрд▓реНрдпрдХрд╛рд▓рди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╕рд╕реНрддрд╛ рд╣реИ?

рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореЛрдХ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдорд╛рди рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ (рдореИрдВ DI рдХреЗ рдмрд┐рдирд╛ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди DI рдХреЗ рд╕рд╛рде рдпрд╣ рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИ):

public abstract class AbstractValidOrderDaoTest(){ Dao dao; public abstract arrange(); @Test public void whenValidOrderInDb_thenReturnValidOrder(){ arrange(); Order order = dao.retrieve(); assertNotNull(order); assertNotNull(order.getCustomerName()); //    } } public class ValidOrderDaoTest extends AbstractOrderDaoTest(){ @Override public void arrange(){ dao = new FakeValidOrderDao(); } } public class OrderDaoTest extends AbstractOrderDaoTest(){ @Override public void arrange(){ dao = new RealOrderDao(new ValidOrderDataSource(url, user, pwd)); } } 

рдСрд░реНрдбрд░рдбрд╛рдЙрдЯреЗрд╕реНрдЯ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореЙрдХ рдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд╕реНрддреБ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡реИрд▓рд┐рдбрд░рдСрдбрд░рдбреИрд╕реНрдЯ рдПрдХ рдореЙрдХ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ ValidOrderDataSource рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рддреЛ рдСрд░реНрдбрд░рдбрд╛рдЙрдЯреЗрд╕реНрдЯ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рд╕рдордп-рд╕рдордп рдкрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдпрд╣ CI \ CD рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ ValidOrderDataSource рдПрдХ рдореЙрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рддреЛ рдСрд░реНрдбрд░рдбреИрдУрдЯреЗрд╕реНрдЯ рдмрд╛рдХреА рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓реЗрдЧрд╛ред

рдЪреВрдВрдХрд┐ рдореЙрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд░реНрдЧ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдлрд┐рд░ рдЗрд╕рдХреЗ рд▓рд┐рдП
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд░реНрдЧ рдХреЛ рдЕрдкрдиреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХрдордЬрд╝реЛрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореЛрдХ-рдирд╢реЗ рдХреА рд▓рдд рдХреЛ рдореЛрдХрд┐рдВрдЧ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣
ValidOrderDataSourceред

рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - рдЙрдЪреНрдЪ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рднреА рдмрдпрд╛рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓реЛрдЧреЛрдВ рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗрд╡рд╛ рд╕реЗ рдХреБрдЫ рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдзрд╛рд░ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрдЪреНрдЪ рд╡рд░реНрдЧ рдЕрдХреНрд╕рд░ рдирд┐рдЪрд▓реЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд░рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣рдЯрд╛рдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред

рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдореЙрдХ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рддрдХ рд╕рднреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирдХрд▓реА рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╕рд╛рд░ рдкрд░рд┐рджреГрд╢реНрдп рдЕрдзрд┐рдХ рдирд┐рдЬреА рд▓реЛрдЧреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЛрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╛рдиреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдХреНрд░реЙрд╕-рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред рдпрд╣ рдкреНрд░рдореБрдЦ рддреНрд░реБрдЯрд┐ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред EmptyResultException_Datasource рдЙрджрд╛ред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдХреНрд░реЙрд╕-рдЯреЗрд╕реНрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред

рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛, рдЬреИрд╕реЗ рдХрд┐ рдХрддрд╛рд░, рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ - рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЬреЛ рд╡реЗ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВред

рдпрджрд┐ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рдЕрдЪрд╛рдирдХ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдЕрдХреНрд╕рд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рд╣рдо рдПрдХ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдЯреЗрд╕реНрдЯ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рд╢реНрд░рдо рдХреА рддреАрд╡реНрд░рддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВред рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдордирдорд╛рдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд░реНрдЧ рдкрд░реАрдХреНрд╖рдг рд╣реИред рдЕрд╕рдВрдмрджреНрдз рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд╣рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

  • рдПрдХ рдЕрдореВрд░реНрдд рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рдЕрдзрд┐рдирд┐рдпрдо рдФрд░ рдореБрдЦрд░рддрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВ
  • рдореЛрдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
  • рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд░реНрдЧ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдирдХрд▓реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВ
  • рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рднреА рддрд░реАрдХреЗ рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред

Source: https://habr.com/ru/post/hi474964/


All Articles