当前位置: 首页 > 知识库问答 >
问题:

@AllargsConstructor未在对象初始化中工作

辛麻雀
2023-03-14

以下是MyService应用程序:

@AllArgsConstructor
public class MyService {
   @NonNull private final MyService1 myService1;
   
   //rest of code
}

我已经指定了@AllargsConstructor。当我试图为上面的类编写单元测试时,它失败了。以下是我如何编写单元测试:

@RunWith(Mockito.JUnitRunner.class)
public MyServiceTest {
     @Mock
     private MyService1 myService1;
     
     private MyService myService;
     @Before
     public void setUp() {
        myService = new MyService(myService1);
        //rest of code
     }
}

抛出的错误是:

Java:类中的构造函数MyService不能应用于给定类型;必填:未找到参数:原因:实际参数列表和正式参数列表的长度不同

但当我在MyService中显式定义构造函数时,测试就会通过。这里有人能帮我吗?

共有1个答案

班景龙
2023-03-14

您可以使用@InjectMocks。

@AllArgsConstructor
class MyService {
    @NonNull
    private final MyService myService1;
}
@RunWith(MockitoJUnitRunner.class)
public MyServiceTest dasf {
    @Mock
    private MyService myService1;

    @InjectMocks
    private MyService myService;

    @Test
    public void aaa() {
        System.out.println(myService.myService1 == myService1);
    }
}

输出:true

 类似资料:
  • 问题内容: 我在用Java工作。 我通常会这样设置一些对象: 问题是:在此示例中是否等于,按原样我可以假定对未初始化的对象进行空检查将是准确的? 问题答案: 正确,未显式初始化的引用类型的静态成员和实例成员都由Java 设置为。相同的规则适用于数组成员。 根据Java语言规范的第4.12.5节: 变量的初始值 程序中的每个变量在使用值之前都必须具有一个值: 每个类变量,实例变量或数组组件在创建时均

  • 问题内容: 我想问一下Java初始化的格式。 我目前所知道的是: 等等 现在,在main类中,我想初始化一个,我不知道该怎么做? 问题答案: 首先,文件是对象类型,与int和double不同,它们是原始类型。我不确定您对Java有多熟悉,但是要创建一个对象,请使用该对象的构造函数。 File具有一个构造函数,该构造函数接收该文件在计算机上的位置字符串。

  • 前面一节的 Fruit 类有两个实变量,分别表述水果的类型和状态.直到为这个类写了一个定制的inspect方法,我们方才了解它不会对一个缺乏属性的水果做出合理的解释.幸运的是,Ruby提供了一种允许实变量总是被初始化的方法. initalize方法 当Ruby创建一个新对象时,它总是会寻找一个名为 initialize 的方法并执行它.因此,我们可以简单通过一个initialize方法向实变量中加

  • 更新代码: 页面对象: 页面库: 测试基地: 看起来框架没有考虑等待预期条件-元素的可见性。我怀疑与“visibilityOf(element)”的实现和@FindBy初始化元素的方式有关 异常的堆栈跟踪: 原因:org。openqa。硒。NoSuchElementException:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“/*[@id='container']]/

  • 问题内容: 我在创建ThreadLocal并使用new ThreadLocal对其进行初始化时遇到问题。问题是,从概念上讲,我真的只是想要一个持久列表,该列表可以延续线程的寿命,但是我不知道是否有一种方法可以在Java中初始化每个线程的内容。 例如,我想要的是这样的: 这样就可以为每个线程初始化它。我知道我可以这样做: 但我真的不想在每次使用时都进行检查。我能在这里做得更好吗? 问题答案: 您只需