【发布时间】:2015-01-22 07:49:45
【问题描述】:
我有一个例子来说明我的问题:
package com.example;
public class ExamplePublicClass {
public void doSomething() {
// a lot of code
String message = new ExamplePublicClass.MessageBuilder().withName("someName").build();
// a lot of code
}
private static class MessageBuilder {
private String name;
public MessageBuilder withName(String name) {
this.name = name;
return this;
}
public String build() {
return this.name + 1;
}
}
}
doSomething() 方法做了很多事情,并且有很多遗留代码,但它有效,我不想碰她。
我唯一想做的就是改变构建器创建日志消息并为他编写测试。问题是 MessageBuilder 是一个私有类,将其更改为公共类没有意义。此外,我不想通过反射改变可见性。
我在同一个包中添加了一个测试类
package com.example;
import org.junit.Test;
public class MessageBuilderTest {
@Test
public void testMessageBuilder() {
String s = MessageBuilder..
}
}
但我无权访问这个私人课程:(
工作代码位于
src/main/java
测试代码所在位置
src/test/java
你怎么了?我应该将项目结构更改为
源代码 |/main/java |/test/java
?
或者存在更好的解决方案?
最好的问候 T
【问题讨论】: