如何在测试中使用两个默认范围对象而不公开它?

时间:2014-01-23 18:43:57

标签: java unit-testing scope

考虑两个包在两个包中的类:

package com.foobar.barers;

abstract class BaseFooBarer<T> extends BaseBarer{ ... }

package com.foobar.unbarers;

abstract class BaseFooUnbarer<T> extends BaseUnbarer{ ... }

现在任何可以被BaseBarer“禁止”的东西都应该能够被BaseUnbarer“取消禁止”。但是BaseFooBarer还包含方法“BarredFoo getBarredFoo()”和“void setFoo(Foo foo)”。 BaseFooUnbarer包含方法“Foo getFoo()”和“void setBarredFoo(BarredFoo barredFoo)”。鉴于我有几个BaseFooBarer实现及其相应的BaseFooUnbarer,我认为使用参数化的junit测试来测试它是最容易的。不幸的是,由于它们位于不同的包中,我无法将测试放在可以访问这两者的包中。所以我要么做了五个几乎完全相同的测试,主要是公开实施或公开这些事情。

现在我没有把它们公之于众的愿望,因为我不想让任何人扩展它们而不是我的jar中的实现。我也不想在我的代码中进行五次冗余测试。

Java中是否有任何模式可以让我吃蛋糕并吃掉它?

有一个限制,我无法将这些类移动到一个包中,因此我无法轻松解决这个问题。

0 个答案:

没有答案