Категория JUnit - как избежать дублирования кода - PullRequest
1 голос
/ 24 апреля 2019

Допустим, у меня есть два тестовых класса с соответствующими категориями:

@Category({CategoryA.class})
public class A {
   ...
}

и

@Category({CategoryB.class})
public class B {
   ...
}

, которые имеют общую кодовую базу и отличаются только 1 строкой метода тестирования. Как лучше всего сделать этот код лучше? Например, если я использую только один класс:

@Category({CategoryA.class, CategoryB.class})
public class AB {
   ...
}

Есть ли способ определить категорию во время выполнения и добавить простой , если оператор?

1 Ответ

0 голосов
/ 24 апреля 2019

По какой причине у вас не может быть абстрактного класса, который выполняет большую часть работы, а затем два расширяющих класса с разными @Category аннотациями?Что-то вроде:

public abstract class ABParent {
    protected abstract void thingThatsDifferent();
}

@Category(CategoryA.class)
public class A extends ABParent {
    @Override
    protected void thingThatsDifferent() {
        System.out.println("Woof");
    }
}

@Category(CategoryB.class)
public class B extends ABParent {
    @Override
    protected void thingThatsDifferent() {
        System.out.println("Meow");
    }
}
...