相关疑难解决方法(0)

用Java维护对象方法契约的自动单元测试?

在开发Java应用程序时,我经常重写Object方法(通常是equals和hashCode).我想通过某种方式系统地检查我是否遵守每个类的Object方法的合同.例如,我希望测试断言对于相等的对象,哈希码也是相等的.我正在使用JUnit测试框架,所以我最好想要一些JUnit解决方案,我可以自动生成这些测试,或者一些测试用例可以以某种方式访问​​我的所有类并确保合同得到维护.

我正在使用JDK6和JUnit 4.4.

java testing junit unit-testing

10
推荐指数
1
解决办法
1073
查看次数

junit 3中的类拆解?

我们使用JUnit 3编写了很多集成测试,尽管我们现在使用4.4运行它们.其中一些需要一个tearDown方法,该方法在类中的所有测试完成后运行(以释放一些公共资源).

我看到这可以在junit 4中使用@AfterClass(org.junit)完成.但是,将其混合到扩展TestCase(junit.framework.*)的现有junit 3测试中似乎不起作用.[BTW有迁移工具吗?问题264680表明一年前没有一个.]

我已经看到过使用junit.extensions.TestSetup来提到这种事情.我对此的简要测试似乎不起作用.任何例子?

java junit junit4

9
推荐指数
1
解决办法
1万
查看次数

在testclass中使用JUnit临时文件夹时出现"尚未创建文件夹"错误

我收到错误"尚未创建临时文件夹",该错误来自方法IllegalStateException抛出TemporaryFolder.getRoot().看起来它没有初始化,但我的研究表明,在setUp() - 方法中初始化临时文件夹时通常就是这种情况.但是@Rule像我一样使用它应该在我看来是有用的.有任何想法吗?

考试班

public class FileReaderTest extends TestCase {

  @Rule
  public TemporaryFolder folder = new TemporaryFolder();

  public FileReaderTest(String testName) {
    super(testName);
  }

  @Override
  protected void setUp() throws Exception {
    super.setUp();
  }

  @Override
  protected void tearDown() throws Exception {
    super.tearDown();
  }

  public void testCSVWriterAndReader() throws Exception{
    testWriterAndReader(new CSVFileWriter(), new CSVFileReader());
  }

  private void testWriterAndReader(FileWriteService writer, FileReader reader) throws Exception {
    folder = new TemporaryFolder();
    File tempFile = folder.newFile("test.csv");
    DataSet initializedData = createMockData();
    writer.writeDataSetToFile(initializedData, tempFile.getPath()); …
Run Code Online (Sandbox Code Playgroud)

java junit temporary-directory

7
推荐指数
1
解决办法
5205
查看次数

如何自动从JUnit 4迁移到JUnit 5?

从JUnit 3到JUnit 4这个问题的精神,是否有任何正则表达式列表可以有效地从junit 4 API迁移到junit 5 API,无论代码大小如何?

junit junit4 junit5

3
推荐指数
1
解决办法
686
查看次数

我可以混合使用JUnit 3和JUnit 4吗?

我正在编写一些JUnit测试,它们从第三方库扩展了一个类.超类扩展TestCase,所以根据定义,我的子类也是如此.

在我的子类中,我用前缀编写测试方法,test然后执行这些方法.

但是,出于多种原因,我们希望转移到JUnit 4(其中一个原因是我们不希望将测试方法作为前缀test)

我尝试使用JUnit 4 @Test注释编写新测试,但这些方法不会被执行.
例如:

public abstract class UtilityClassFromThirdPartyLibrary extends TestCase {

}

public class MyTestClass extends UtilityClassFromThirdPartyLibrary {

    public void testThisMethodIsInvokedBecauseItStartsWithTest {
    }

    @Test
    public void thisMethodDoesNotGetInvoked {
    }
}
Run Code Online (Sandbox Code Playgroud)

不扩展第三方测试类不是一种选择.(对于它的价值,它是Spring,它AbstractXmlFlowExecutionTests反过来扩展了其他Spring类,最终扩展TestCase.超类中的方法提供了如此多的设置和样板,没有扩展它们只是为了使用JUnit 4会适得其反)

如上所述,我们使用JUnit 4 @Test注释的动机之一是它允许我们更好地命名我们的方法.我们的观点是这个词test是多余的,因为该类显然是一个测试类,并且该方法带有注释@Test.我们以BDD样式编写测试,因此我们的测试方法名称描述了被测单元应该做什么 - 我们的命名约定是public void shouldDoSomething()

有没有人知道是否有可能混合' TestCase使用JUnit 4的方法扩展JUnit 3的''匹配测试类@Test?如果是这样,怎么样?

谢谢
内森


我已经看到了几个与问题相关的SO问题,但它们与Android或测试套件有关,因此与我的问题不完全相同.EG:
可以混合JUnit3和JUnit4吗?
/sf/ask/2267533131/

java junit4 junit3

0
推荐指数
1
解决办法
846
查看次数