我使用在Junit测试用例中运行的嵌入式服务器.有时这些服务器需要一个工作目录(例如Apache Directory服务器).
Junit 4.7中的新@Rule可以处理这些情况.TemporaryFolder-Rule可以创建临时目录.可以为服务器创建自定义ExternalResource-Rule.但是如果我想将结果从一个规则传递到另一个规则,我该如何处理:
import static org.junit.Assert.assertEquals;
import java.io.*;
import org.junit.*;
import org.junit.rules.*;
public class FolderRuleOrderingTest {
@Rule
public TemporaryFolder folder = new TemporaryFolder();
@Rule
public MyNumberServer server = new MyNumberServer(folder);
@Test
public void testMyNumberServer() throws IOException {
server.storeNumber(10);
assertEquals(10, server.getNumber());
}
/** Simple server that can store one number */
private static class MyNumberServer extends ExternalResource {
private TemporaryFolder folder;
/** The actual datafile where the number are stored */
private File dataFile;
public MyNumberServer(TemporaryFolder folder) {
this.folder = …Run Code Online (Sandbox Code Playgroud)