Geo*_*Com 6 java junit mockito
我试图在 JUnit 测试中避免重复代码,但我有点卡住了。
这是我的第一个测试,对于第二个测试,它具有完全相同的方法但不同的服务(不同的输入)。而不是TestCaseResourceTest1我有TestCaseResourceTest2。现在测试两者的正确方法是什么?我想为测试编号 2 设置一个单独的文件,我应该如何避免重复代码?(例如,使用 beforeFileTest() 方法)
public class TestCaseResourceTest1 {
@Mock
private TestService testService;
@Mock
private AreaService areaService;
private TestCaseService1 testCaseService1; // is changed in test2
@Before
public void before() throws Exception{
testCaseService1 = mock(TestCaseService1.class); // is changed in test2
MockitoAnnotations.initMocks(this);
beforeFileTest();
}
private void beforeFileTest() throws Exception{
doReturn(true).when(areaService).chechExists(any(String.class), eq(false));
}
@Test
public void verifyFileExists() throws Exception{
verifyOtherArea(testCaseService1); // is changed in test2
doReturn(false).when(areaService).chechExists(any(String.class), eq(false));
}
}
Run Code Online (Sandbox Code Playgroud)
只是带有注释的行is changed in test2是差异。
Tnx
鉴于您的问题的摘录:
\n\n\n\n\n\xe2\x80\xa6 而不是 TestCaseResourceTest1 我有 TestCaseResourceTest2 \xe2\x80\xa6 我想要一个单独的文件用于测试号 2
\n
\xe2\x80\xa6 在测试用例之间共享代码的标准方法是:
\n\n创建测试套件并将共享代码包含在测试套件中(通常在@BeforeClass和@AfterClass方法中)。这允许您 (1) 运行一次设置代码(每次调用套件);(2) 封装共享的设置/拆卸代码,(3) 稍后轻松添加更多测试用例。例如:
@RunWith(Suite.class)\n@Suite.SuiteClasses({\n TestCaseResourceTest1.class,\n TestCaseResourceTest2.class\n)}\npublic class TestSuiteClass {\n\n @BeforeClass\n public void setup() {\n beforeFileTest();\n }\n\n private void beforeFileTest() throws Exception {\n // ...\n }\n}\nRun Code Online (Sandbox Code Playgroud)创建一个抽象类,它是父级TestCaseResourceTest1,TestCaseResourceTest2并让这些测试用例调用父级中的共享代码(通常通过super()调用)。通过这种方法,您可以在父类中声明默认共享代码,同时仍然允许子类 (1) 拥有自己的行为以及 (2) 有选择地覆盖父类/默认行为
@RunWith(YourCustomRunner.class)。有关此方法的更多详细信息请参见此处只是重申其他一些发帖者所说的话;这不是常见的第一步,因此您可能更愿意从简单的开始,并且仅在您的使用情况提供了令人信服的理由时才转向套件或抽象类或自定义运行器。
\n| 归档时间: |
|
| 查看次数: |
6350 次 |
| 最近记录: |