小编Tod*_*ell的帖子

JUnit 5 具有相同参数的多个参数化测试 - 迁移参数化

以前在 JUnit4 中,您可以执行以下操作:

@RunWith(Parameterized.class)
public class MyTest
{
    private final int number;

    public MyTest(int number) {
        this.play = play;
    }

    @Test
    public void testIsEven() {
        assertEquals(true, number % 2 == 0);
    }

    @Test
    public void testIsNotOdd() {
        assertEquals(false, number % 2 != 0);
    }

    @Parameterized.Parameters
    public static int[] data() {
        return new int[] { 2, 4, 6 } 
    }
}
Run Code Online (Sandbox Code Playgroud)

这将遍历数组,MyTest使用每个值实例化,然后在每个实例上运行所有测试。有关更多详细信息,请参阅参数化文档

现在在 JUnit5 中,事情发生了变化,根据新文档,您必须像这样编写相同的测试:

public class MyTest {
    @ParameterizedTest
    @MethodSource("data")
    public void testIsEven(int number) …
Run Code Online (Sandbox Code Playgroud)

java migration testing junit junit5

6
推荐指数
1
解决办法
3382
查看次数

编写一个比Java更优雅的可复制界面

我正在尝试编写一个类可以实现的接口,使它们"可复制",一个(类型)安全的Clonable.

在Java中,我会使用递归泛型做类似的事情:

 public interface Copyable<C extends Copyable<C>> {
      C copy();
 }

 public class Example implements Copyable<Example> {
      ...

      @Override
      public Example copy()
      {
           return new Example(this); //invoke copy constructor
      }
 }
Run Code Online (Sandbox Code Playgroud)

显然,这不是那么优雅,标题CopyableExample看起来过于复杂.在Kotlin有更优雅的方式来实现这一目标吗?

generics copy interface self-type kotlin

5
推荐指数
1
解决办法
888
查看次数

标签 统计

copy ×1

generics ×1

interface ×1

java ×1

junit ×1

junit5 ×1

kotlin ×1

migration ×1

self-type ×1

testing ×1