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

JUnit-无法静态引用类型Customer[closed]中的非静态方法setUsername(String)

柳羽
2023-03-14

我是Java和OOD的新手&一直在尝试为一个小的JDBC项目编写一些测试,但在让测试进入绿色光时遇到了一些问题。这就是我开始的地方,玩了很多次都没有效果。

下面是我的测试:

@Test // 3
public void testThatWhenIAddACustomerThatWHenICallTheGetCustomerMethodInCustomerDAOItReturnsTheUser() {

    CustomerDAO customerDAO = new CustomerDAO();
    customerDAO.setEntityManager(entityManager);
    Customer customer = new Customer();
    Customer.setUsername("Customer1");
    customerDAO.addCustomer(customer);

    Customer customerInDB = customerDAO.getCustomer("Customer1");
    String usernameInDB = customerInDB.getUsername();
    assertEquals("Customer1", customerInDB);

}

我的刀:

public void addCustomer(Customer customer) {
    EntityTransaction entityTransaction = entityManager.getTransaction();
    entityTransaction.begin();
    entityManager.persist(customer);
    entityTransaction.commit();

}

public Customer getCustomer(String username) {
    Customer customerInDB = entityManager.find(Customer.class, username);
    return customerInDB;
}

public void removeCustomer(String username) {

    Customer customerInDB = entityManager.find(Customer.class, username);

    EntityTransaction entityTransaction = entityManager.getTransaction();
    entityTransaction.begin();

    entityManager.remove(customerInDB);
    entityTransaction.commit();

}

我的客户类:

@Entity public class Customer {
@Id public String username;

private int customerId;
private double customerBalance;
private String firstName;
private String lastName;
private String email;


public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

共有1个答案

邵兴文
2023-03-14

您的问题是:

 Customer.setUsername("Customer1");

您有一个大写C,所以您使用的是类名,而不是变量名。事关重大!

 类似资料:
  • 问题内容: 到目前为止,我有以下代码: } 当我尝试在末尾设置double 时,出现错误消息“无法对非静态方法进行静态引用”。它说解决方法是也使该方法静态化,但是我的教授告诉我不要将该字段静态化。有一个简单的解决方案我只是想念吗? 问题答案: 静态方法属于该类,非静态方法属于该类的 实例 。 当您从呼叫时,您会收到错误消息,因为它与任何实例都没有关联。 您需要创建该类的实例: 然后,您可以调用实例

  • 问题内容: 我无法编译以下代码: 出现以下错误: 无法从静态内容引用非静态方法calcArea(int,int) 这是什么意思?我该如何解决该问题..? 编辑: 根据您的建议,我创建了一个新的test()实例,如下所示: 这样对吗?如果我这样做有什么区别… 问题答案: Nanne提出的建议绝对可以解决您的问题。但是,我认为如果现在就养成习惯,在学习Java的早期阶段,尝试尽可能少地使用静态方法(例

  • 问题内容: 我的Android程序中存在旧的“无法对非静态方法进行静态引用”错误,我遇到了一些问题。我正在创建一个掉落游戏(类似于Powder Game),并且创建了一个名为Control的类,以在屏幕底部创建一个带有画笔大小滑块(效果很好)的控件栏,并弹出一个按钮,允许用户选择所选元素的对话框。但是,当我从代码中调用DemoActivity.showDialog(2)时,它将静态引用非静态错误(

  • 可能重复: “不能从静态上下文引用非静态方法”背后的原因是什么? 不能对非静态方法进行静态引用 不能对非静态字段进行静态引用 我不明白我的代码出了什么问题。 线程“main”java.lang.error中的异常:未解决的编译问题:无法静态引用Two中的非静态方法fxn(int)

  • 我试图在我的程序中使用accessors(Set/Get)方法,当我试图在main方法中使用Get方法时,我得到了以下错误: 无法从Student类型对非静态方法进行静态引用。 我不确定如何着手解决这个问题。我是Java编程的初学者。 以下是具体的问题: 设置/获取方法: 错误行: 任何建议都将不胜感激* 我的代码的完整图片。

  • 我有一个类,其中有一些静态方法和一些非静态方法,所以当我试图从静态方法访问非静态方法时,我会遇到一个著名的错误。每当我搜索这个论坛,我得到的解决方案,当有两个类,从一个你试图达到另一个。我的问题是,如果它们在同一个类中,如何从静态方法调用非静态方法? 我试着用 但是我的方法包含发送Intent和finish(),所以如果我创建的对象不是finish,就不起作用。