Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @MockClass不工作_Java_Testing_Mocking_Testng_Jmockit - Fatal编程技术网

Java @MockClass不工作

Java @MockClass不工作,java,testing,mocking,testng,jmockit,Java,Testing,Mocking,Testng,Jmockit,我是jmockit新手,正在尝试执行以下在线示例 @MockClass不工作。我的书店的getBookTitle()方法正在调用orginal类的函数,而不是mock类 书店类: public class BookStore { public String getBookTitle(String isbn){ return BookStoreService.getBookTitle(isbn); } } public class BookStoreService {

我是jmockit新手,正在尝试执行以下在线示例

@MockClass不工作。我的书店的getBookTitle()方法正在调用orginal类的函数,而不是mock类

书店类:

public class BookStore {

  public String getBookTitle(String isbn){
    return BookStoreService.getBookTitle(isbn);
  }
} 
public class BookStoreService {

  public static String getBookTitle(String isbn){
    return "Random";
  }
}
public class BookStoreTest {

  private static Map<String, String> bookMap = new HashMap<String, String>(2);

  @BeforeClass
  public static void setup() {
    System.out.println("in setup()");
    bookMap.put("0553293354", "Foundation");
    bookMap.put("0836220625", "The Far Side Gallery");
  }

  @MockClass(realClass = BookStoreService.class)
  public static class MockBookstoreService {
    @Mock
    public static String getBookTitle(String isbn) {
        System.out.println("in getBookTitle()");
        if (bookMap.containsKey(isbn)) {
            return bookMap.get(isbn);
        } else {
            return null;
        }
    }
  }

  @Test
  public void testGetBookTitle() throws Exception {
    System.out.println("in testGetBookTitle()");
    final String isbn = "0553293354";
    final String expectedTitle = "Foundation";
    BookStore store = new BookStore();
    String title = store.getBookTitle(isbn);
    System.out.println(title); // This prints "Random" instead of "Foundation"
    Assert.assertEquals(title, expectedTitle);
  }


}
书店服务类别:

public class BookStore {

  public String getBookTitle(String isbn){
    return BookStoreService.getBookTitle(isbn);
  }
} 
public class BookStoreService {

  public static String getBookTitle(String isbn){
    return "Random";
  }
}
public class BookStoreTest {

  private static Map<String, String> bookMap = new HashMap<String, String>(2);

  @BeforeClass
  public static void setup() {
    System.out.println("in setup()");
    bookMap.put("0553293354", "Foundation");
    bookMap.put("0836220625", "The Far Side Gallery");
  }

  @MockClass(realClass = BookStoreService.class)
  public static class MockBookstoreService {
    @Mock
    public static String getBookTitle(String isbn) {
        System.out.println("in getBookTitle()");
        if (bookMap.containsKey(isbn)) {
            return bookMap.get(isbn);
        } else {
            return null;
        }
    }
  }

  @Test
  public void testGetBookTitle() throws Exception {
    System.out.println("in testGetBookTitle()");
    final String isbn = "0553293354";
    final String expectedTitle = "Foundation";
    BookStore store = new BookStore();
    String title = store.getBookTitle(isbn);
    System.out.println(title); // This prints "Random" instead of "Foundation"
    Assert.assertEquals(title, expectedTitle);
  }


}
测试类:

public class BookStore {

  public String getBookTitle(String isbn){
    return BookStoreService.getBookTitle(isbn);
  }
} 
public class BookStoreService {

  public static String getBookTitle(String isbn){
    return "Random";
  }
}
public class BookStoreTest {

  private static Map<String, String> bookMap = new HashMap<String, String>(2);

  @BeforeClass
  public static void setup() {
    System.out.println("in setup()");
    bookMap.put("0553293354", "Foundation");
    bookMap.put("0836220625", "The Far Side Gallery");
  }

  @MockClass(realClass = BookStoreService.class)
  public static class MockBookstoreService {
    @Mock
    public static String getBookTitle(String isbn) {
        System.out.println("in getBookTitle()");
        if (bookMap.containsKey(isbn)) {
            return bookMap.get(isbn);
        } else {
            return null;
        }
    }
  }

  @Test
  public void testGetBookTitle() throws Exception {
    System.out.println("in testGetBookTitle()");
    final String isbn = "0553293354";
    final String expectedTitle = "Foundation";
    BookStore store = new BookStore();
    String title = store.getBookTitle(isbn);
    System.out.println(title); // This prints "Random" instead of "Foundation"
    Assert.assertEquals(title, expectedTitle);
  }


}
公共类书店测试{
私有静态映射bookMap=newhashmap(2);
@课前
公共静态无效设置(){
System.out.println(“in setup()”;
bookMap.put(“0553293354”,“Foundation”);
图书地图(0836220625,“远处画廊”);
}
@MockClass(realClass=BookStoreService.class)
公共静态类模拟书店服务{
@嘲弄
公共静态字符串getBookTitle(字符串isbn){
System.out.println(“in-getBookTitle()”;
if(bookMap.containsKey(isbn)){
返回bookMap.get(isbn);
}否则{
返回null;
}
}
}
@试验
public void testGetBookTitle()引发异常{
System.out.println(“in-testGetBookTitle()”;
最终字符串isbn=“0553293354”;
最终字符串expectedTitle=“基础”;
书店=新书店();
字符串标题=store.getBookTitle(isbn);
System.out.println(title);//这会打印“Random”而不是“Foundation”
Assert.assertEquals(标题,预期标题);
}
}
PS:我正在使用TestNG

使用,您可以这样做:

@BeforeClass
public static void setup() {
    System.out.println("in setup()");
    bookMap.put("0553293354", "Foundation");
    bookMap.put("0836220625", "The Far Side Gallery");

    new MockUp<BookStoreService>() {            
        @Mock
        public String getBookTitle(String isbn) {
            System.out.println("in getBookTitle()");
            if (bookMap.containsKey(isbn)) {
                return bookMap.get(isbn);
            } else {
                return null;
            }
        }
    };
}

@MockClass注释已被删除,您使用哪个版本的jmockit?0.999.2。我知道这是不赞成的。寻找其他替代方案。我建议您开始使用依赖注入。它的好处之一是测试简单得多。在这种特殊情况下,您将把BookStoreService注入BookStore