Spring Boot java.lang.NoSuchMethodError模拟本地日期和静态方法

xtupzzrd  于 2023-01-05  发布在  Spring
关注(0)|答案(1)|浏览(128)

我使用的是Mockito 4.8.0和Java 1.8版本,我有一个LocalDate变量,它被发送到一个静态方法,在那里我得到了错误。静态方法是使用遥测打印日志。提前感谢。

@RunWith(MockitoJUnitRunner.class) 
public class CategoryServiceImplTest {

    @InjectMocks    
    private ItemServiceImpl itemService;

    @Test public void getItem() { 
        LocalDate startDate = LocalDate.of(2022, 12, 12); 
        itemService.getItem(startDate);    
    } 
}

public class ItemServiceImpl { 
    getItem(LocalDate  startDate){ 
        A.method(startDate); 
    } 
}

public class Utils {
    public static void method(final LocalDate startDate){} 
}

我尝试使用mvn全新安装修复,但问题仍然存在。请给我任何帮助或建议来解决它。此方法在调用其他方法时有效。

hgb9j2n6

hgb9j2n61#

我能够成功地执行CategoryServiceImplTest.java,这在本质上与您的问题相似。看起来您只需要稍微调整您的代码就可以获得传递的错误。我有java 8,在我的pom.xml中声明的spring-boot-starter-parent 2.5.5和junit4.13.2。您的类很可能与我下面的有所不同,但这给了您一个如何传递错误的想法。

类别服务.java:

package com.example.javalangnosuchmethoderror;

public interface CategoryService {
    String getCategory();
}

类别服务实现java

package com.example.javalangnosuchmethoderror;

import org.springframework.stereotype.Service;

@Service
public class CategoryServiceImpl implements CategoryService {
    @Override
    public String getCategory() {
        return "test";
    }
}

项目服务.java

package com.example.javalangnosuchmethoderror;

import java.time.LocalDate;

public interface ItemService {
    LocalDate getItem(LocalDate startDate);
}

项目服务实现java

package com.example.javalangnosuchmethoderror;

import org.springframework.stereotype.Service;

import java.time.LocalDate;

@Service
public class ItemServiceImpl implements ItemService {

    @Override
    public LocalDate getItem(LocalDate startDate) {
        Utils.method(startDate);
        return startDate;
    }
}

实用工具.java

package com.example.javalangnosuchmethoderror;

import java.time.LocalDate;

public class Utils {
    public static void method(final LocalDate startDate) {
    }
}

类别服务实现测试.java:

package com.example.javalangnosuchmethoderror;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.junit.MockitoJUnitRunner;

import java.time.LocalDate;

@RunWith(MockitoJUnitRunner.class)
public class CategoryServiceImplTest {

    @InjectMocks
    private ItemServiceImpl itemService;

    @Test
    public void getItem() {
        LocalDate startDate = LocalDate.of(2022, 12, 12);
        itemService.getItem(startDate);
    }
}

相关问题