小编Rae*_*ald的帖子

如何编写单元测试?

我有一个Java类.我怎样才能 对它进行单元测试


在我的情况下,我有一个二进制和.它需要两个byte[]数组,对它们求和,并返回一个新的二进制数组.

java unit-testing

129
推荐指数
5
解决办法
28万
查看次数

为什么Java不允许从静态初始化块中抛出已检查的异常?

为什么Java不允许从静态初始化块中抛出已检查的异常?这个设计决定背后的原因是什么?

java exception static-initializer

128
推荐指数
4
解决办法
8万
查看次数

是否向HashSet/HashMap添加重复值会替换先前的值

请考虑以下代码:

HashSet hs = new HashSet();
hs.add("hi"); -- (1)
hs.add("hi"); -- (2)
Run Code Online (Sandbox Code Playgroud)

hs.size()将给出1,因为HashSet不允许重复,因此只存储一个元素.

我想知道我们是否添加了重复元素,然后它是否替换了前一个元素,或者它只是不添加它?

此外,HashMap在同一案件中使用会发生什么?

java hashmap duplicates hashset

128
推荐指数
3
解决办法
19万
查看次数

在数据库中存储性别(性别)

我想以尽可能少的(大小/性能)成本将用户的性别存储在数据库中.

到目前为止,我想到了3个场景

  1. INT - 在代码与枚举对齐(1 =男,2 =女性,3 = ...)
  2. char(1) - 存储m,f或其他单个字符标识符
  3. (布尔值) - 此选项是否有适当的字段名称?

我想问的原因是因为这个的答案,其提到字符布尔值.

我要澄清,我使用MS SQL 2008,它DOES其实有位数据类型.

sql database-design

127
推荐指数
3
解决办法
10万
查看次数

Java循环在循环中执行余数操作会阻塞所有其他线程

以下代码片段执行两个线程,一个是每秒记录一次的简单计时器,第二个是执行余数操作的无限循环:

public class TestBlockingThread {
    private static final Logger LOGGER = LoggerFactory.getLogger(TestBlockingThread.class);

    public static final void main(String[] args) throws InterruptedException {
        Runnable task = () -> {
            int i = 0;
            while (true) {
                i++;
                if (i != 0) {
                    boolean b = 1 % i == 0;
                }
            }
        };

        new Thread(new LogTimer()).start();
        Thread.sleep(2000);
        new Thread(task).start();
    }

    public static class LogTimer implements Runnable {
        @Override
        public void run() {
            while (true) {
                long start = System.currentTimeMillis();
                try {
                    Thread.sleep(1000); …
Run Code Online (Sandbox Code Playgroud)

java multithreading

122
推荐指数
4
解决办法
7954
查看次数

如何测试Spring Data存储库?

我想要一个UserRepository在Spring Data的帮助下创建的存储库(比方说).我是spring-data(但不是spring)的新手,我使用的是本教程.我选择处理数据库的技术是JPA 2.1和Hibernate.问题是我对如何为这样的存储库编写单元测试一无所知.

我们以create()方法为例.当我正在测试时,我应该为它编写单元测试 - 这就是我遇到的三个问题:

  • 首先,如何将一个模拟注入EntityManager一个UserRepository接口的不存在的实现?Spring Data将基于此接口生成实现:

    public interface UserRepository extends CrudRepository<User, Long> {}
    
    Run Code Online (Sandbox Code Playgroud)

    但是,我不知道如何强制它使用EntityManager模拟和其他模拟 - 如果我自己编写了实现,我可能会有一个setter方法EntityManager,允许我使用我的模拟进行单元测试.(至于实际的数据库连接,我有一个JpaConfiguration类,有注释@Configuration@EnableJpaRepositories,通过编程定义豆类DataSource,EntityManagerFactory,EntityManager等等-但库应该是测试友好,并允许重写这些事情).

  • 其次,我应该测试互动吗?这是我很难找出什么方法EntityManagerQuery应该被称为(类似于那个verify(entityManager).createNamedQuery(anyString()).getResultList();),因为它是不是我是谁写的实施.

  • 第三,我是否应该首先对Spring-Data生成的方法进行单元测试?据我所知,第三方库代码不应该进行单元测试 - 只有开发人员自己编写的代码应该进行单元测试.但如果这是真的,它仍然会将第一个问题带回现场:比方说,我的存储库有几个自定义方法,我将编写实现,如何注入我的模拟EntityManagerQuery进入最终,生成库?

注:我将使用测试驱动我的仓库集成和单元测试.对于我的集成测试,我使用的是HSQL内存数据库,显然我没有使用数据库进行单元测试.

也许第四个问题,在集成测试中测试正确的对象图创建和对象图检索是否正确(比方说,我有一个用Hibernate定义的复杂对象图)?

更新:今天我继续尝试模拟注入 - 我创建了一个静态内部类来允许模拟注入.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@Transactional
@TransactionConfiguration(defaultRollback = true)
public class UserRepositoryTest {

@Configuration
@EnableJpaRepositories(basePackages = …
Run Code Online (Sandbox Code Playgroud)

unit-testing jpa spring-data spring-data-jpa

119
推荐指数
8
解决办法
13万
查看次数

ConcurrentModificationException和HashMap

我正在使用JPA持久化对象.Main对象与另一个对象具有一个拥有的One-Many关系.另一个对象存储在HashMap中.什么样的同步可以解决这个问题?它似乎发生在完全随机的时间,并且非常难以预测.这是我得到的例外:

Exception in thread "pool-1-thread-1" java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
        at java.util.HashMap$ValueIterator.next(Unknown Source)
        at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:555)
        at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)
        at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)
        at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)
        at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
        at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
Run Code Online (Sandbox Code Playgroud)

java collections exception concurrentmodification

118
推荐指数
4
解决办法
14万
查看次数

是什么原因导致"无法访问jar文件"错误?

我想在不使用IDE的情况下执行我的程序.我已经创建了一个jar文件和一个exectuable jar文件.当我双击exe jar文件时,没有任何反应,当我尝试在cmd中使用该命令时,它给了我:

Error: Unable to access jarfile <path>
Run Code Online (Sandbox Code Playgroud)

我使用命令: java -jar Calculator.jar

我是如何创建jar的:

  1. 右键单击项目文件夹(计算器)
  2. 选择
  3. 单击Java Folder并选择"Exectuable Jar File",然后选择next
  4. 启动配置:主要 - 计算器
  5. 创建导出目的地
  6. 点击"完成"并获利!好吧,不是真的.

java jar executable-jar

117
推荐指数
12
解决办法
54万
查看次数

如何在Hibernate 4中配置日志记录以使用SLF4J

Hibernate 3.x使用进行日志记录.Hibernate 4.x使用.我正在编写一个独立的应用程序,它使用Hibernate 4和SLF4J进行日志记录.

如何配置Hibernate以登录SLF4J?

如果那不可能,我怎么能配置Hibernate的日志记录呢?

关于日志记录的Hibernate 4.1手册部分首先警告它是......

完全过时了.Hibernate从4.0开始使用JBoss Logging.当我们将此内容迁移到开发人员指南时,这将记录在案.

......继续谈论SLF4J,所以没用.入门指南开发人员指南都没有谈论记录.迁移指南也没有.

我已经查找了有关jboss-logging本身的文档,但我根本找不到任何文档.在GitHub的页面是沉默的,和JBoss的社区项目页面甚至没有列出的jboss-记录.我想知道项目的bug跟踪器是否可能有任何与提供文档相关的问题,但事实并非如此.

好消息是,在应用程序服务器(如JBoss AS7)中使用Hibernate 4时,很大程度上会记录日志记录.但是我如何在独立应用程序中配置它?

logging hibernate slf4j hibernate-4.x jboss-logging

111
推荐指数
5
解决办法
5万
查看次数

如何使用JUnit测试我的servlet

我使用Java Servlets创建了一个Web系统,现在想要进行JUnit测试.我dataManager只是将它提交到数据库的基本代码.你会如何使用JUnit测试Servlet?

我的代码示例允许用户注册/注册,这是通过AJAX从我的主页面提交的:

public void doPost(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException{

    // Get parameters
    String userName = request.getParameter("username");
    String password = request.getParameter("password");
    String name = request.getParameter("name");

    try {

        // Load the database driver
        Class.forName("com.mysql.jdbc.Driver");

        //pass reg details to datamanager       
        dataManager = new DataManager();
        //store result as string
        String result = dataManager.register(userName, password, name);

        //set response to html + no cache
        response.setContentType("text/html");
        response.setHeader("Cache-Control", "no-cache");
        //send response with register result
        response.getWriter().write(result);

    } catch(Exception e){
        System.out.println("Exception is :" + e); …
Run Code Online (Sandbox Code Playgroud)

testing junit unit-testing servlets

107
推荐指数
2
解决办法
16万
查看次数