小编Zac*_*ack的帖子

使用IntelliJ生成类图

如何获取IntelliJ 10.5(在Mac上)生成一个显示项目中所有类的类图?我确定我忽略了一些明显的东西,但我只能得到"显示图表"功能,一次显示一个类.(我也想出了如何添加其他类,但同样只能添加一个类.)

java uml class-diagram intellij-idea

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

Class.forName()vs ClassLoader.loadClass() - 用于动态加载?

动态加载类时,何时适合使用

Class.forName("SomeClass");
Run Code Online (Sandbox Code Playgroud)

我应该什么时候使用

ClassLoader.getSystemClassLoader().loadClass("SomeClass");
Run Code Online (Sandbox Code Playgroud)

或者,他们是两种做同样事情的方式吗?

java classloader

98
推荐指数
2
解决办法
7万
查看次数

IntelliJ:指定每个项目选项卡大小

有没有办法在IntelliJ中为单个文件设置选项卡大小,或者至多为单个项目设置选项卡大小?

我的所有代码都使用3的制表符; 但是,我正在与一个更喜欢标签大小为4的作者合作.有没有办法将标签大小设置为4,只有那些属于这个项目的文件?

tabs intellij-idea

22
推荐指数
1
解决办法
2万
查看次数

调试导轨中夹具外键错误的技巧

我的装置设置中出现外键错误,并且我对如何调试它感到困惑。

具体来说,我收到以下错误,但我知道标签存在:

RuntimeError: Foreign key violations found in your fixture data. Ensure you aren't referring to labels that don't exist on associations.
Run Code Online (Sandbox Code Playgroud)

设置如下:我有用户、类别和条目。每个类别有一个用户,每个条目有 12 个类别。

有问题的参赛装置是

bob_2022_01_10:
  date: 2022-01-10
  segment: 3
  user: bob
  category_0: test
  # categories can be null, so I don't set category_1 through category_11 for this example.
Run Code Online (Sandbox Code Playgroud)

而且,如果我注释掉该category_0行,一切都会正常。

类别固定装置是

test:
  id: 100
  name: Test category
  user: bob
  parent_id: nil
Run Code Online (Sandbox Code Playgroud)

如果我注释掉 Entry 夹具中的违规行,我就可以test在其他测试中使用该夹具。(因此,我知道问题不在于我引用了不存在的夹具。)

我可以在测试中“手动”设置条目和类别之间的关系:

   entry = entries :bob_2022_01_10
   entry.category_0 = categories :test
Run Code Online (Sandbox Code Playgroud)

我还可以使用 Category_id …

ruby ruby-on-rails fixtures

13
推荐指数
2
解决办法
3055
查看次数

使用doReturn部分模拟PowerMockito的静态方法

当我无法使用Mockito.when()时,如何使用PowerMockito中的doReturn模式来模拟静态方法?

我想测试以下静态方法:

public static PrintWriter openWriter(File file, Charset charset, boolean autoflush) throws FileNotFoundException {
      return openWriterHelper(new FileOutputStream(file), charset, autoflush);
   }
Run Code Online (Sandbox Code Playgroud)

这是我的testMethod:

@Test
public void testOpenWriter_file_charset_autoflush() throws Throwable {
      Charset charset = mock(Charset.class);
      PrintWriter expected = mock(PrintWriter.class);
      File file = mock(File.class);
      FileOutputStream fos = mock(FileOutputStream.class);

      spy(IOHelper.class);
      whenNew(FileOutputStream.class).withArguments(file).thenReturn(fos);
      when(IOHelper.openWriterHelper(fos, charset, true)).thenReturn(expected);

      PrintWriter observed = IOHelper.openWriter(file, charset, true);
      assertEquals(expected, observed);

      verifyStatic();
      IOHelper.openWriterHelper(fos, charset, true);
Run Code Online (Sandbox Code Playgroud)

}

问题是我无法在调用when时调用openWriterHelper,因为该方法在传递模拟OutputStream时会引发异常.

如果重要,这是openWriterHelper的代码:

public static PrintWriter openWriterHelper(OutputStream stream, Charset charset,
                                    boolean autoflush) {
  return new PrintWriter(new java.io.BufferedWriter(
        new java.io.OutputStreamWriter(stream, …
Run Code Online (Sandbox Code Playgroud)

mockito powermock

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

IntelliJ IDEA"找不到'要求'"

当使用带有IntelliJ的Ruby插件时,我应该期望/容忍哪些"未定义的引用"警告,哪些表明我没有正确配置某些内容?

例如,我收到'require','File'和'FileUtils'的"找不到"警告.我怀疑这表明配置问题.

我也收到RSpec方法的警告,比如'describe','before','after'和'it'.我是否也可以配置IntelliJ来"找到"这些?

ruby rspec intellij-idea

9
推荐指数
1
解决办法
1622
查看次数

GNU组装标签中美元符号的含义

gnu组件标签前的美元符号是什么意思?

例如,mov msg, %si和之间有什么区别mov $msg, %si

(有关更多上下文,我正在研究x86裸机示例:https : //github.com/cirosantilli/x86-bare-metal-examples/blob/master/bios_hello_world.S

#include "common.h"
BEGIN
    mov $msg, %si
    mov $0x0e, %ah
loop:
    lodsb
    or %al, %al
    jz halt
    int $0x10
    jmp loop
halt:
    hlt
msg:
    .asciz "hello world"
Run Code Online (Sandbox Code Playgroud)

美元($)和百分号(%)在汇编英特尔x86中代表什么?讨论了寄存器前的%和常量前的$的一般用法;但是,我不认为它几乎可以说明带有标签的$的使用如以下答案所示)

assembly gcc

9
推荐指数
1
解决办法
1272
查看次数

如何在 Rails 6 中配置 Jasmine?

如何在 Rails 6 环境中配置 Jasmine(其中 Webpack 替换了 Javascript 的资产管道),以便我可以测试我为我的应用程序编写的 Javascript 模块?

我安装了 jasmine gem,运行rails generate jasmine:install并编辑jasmine.yml以指向我的 Javascript 源代码和规范的位置。

问题是我不能使用导入/导出语句。(例如,试图加载我的第一模块向测试结果在此错误在Chrome: Uncaught SyntaxError: Unexpected token 'export'

据我所知,我需要设置 Jasmine 才能使用 babel;但是,我没有找到关于如何在新的 Rails 6 布局中执行此操作的说明。

ruby-on-rails jasmine babeljs es6-modules ruby-on-rails-6

9
推荐指数
1
解决办法
467
查看次数

在匿名类中测试方法时,如何使用Powermockito来模拟新对象的构造?

我想写一个JUnit测试来验证下面的代码使用BufferedInputStream:

public static final FilterFactory BZIP2_FACTORY = new FilterFactory() {
    public InputStream makeFilter(InputStream in) {        
        // a lot of other code removed for clarity 
        BufferedInputStream buffer = new BufferedInputStream(in);
        return new CBZip2InputStream(buffer);
    }
};
Run Code Online (Sandbox Code Playgroud)

(FilterFactory是一个接口.)

到目前为止我的测试看起来像这样:

@Test
public void testBZIP2_FactoryUsesBufferedInputStream() throws Throwable {
    InputStream in = mock(InputStream.class);
    BufferedInputStream buffer = mock(BufferedInputStream.class);
    CBZip2InputStream expected = mock(CBZip2InputStream.class);

    PowerMockito.spy(InputHelper.BZIP2_FACTORY);  // This line fails
    whenNew(BufferedInputStream.class).withArguments(in).thenReturn(buffer);
    whenNew(CBZip2InputStream.class).withArguments(buffer).thenReturn(expected);
    InputStream observed = InputHelper.BZIP2_FACTORY.makeFilter(in);

    assertEquals(expected, observed);
}
Run Code Online (Sandbox Code Playgroud)

对PowerMockito.spy的调用会引发此消息的异常:

org.mockito.exceptions.base.MockitoException: 
Mockito cannot mock this class: class edu.gvsu.cis.kurmasz.io.InputHelper$1
Mockito can …
Run Code Online (Sandbox Code Playgroud)

java anonymous-class mockito powermock object-construction

7
推荐指数
2
解决办法
4万
查看次数

使用Java反射打包和受保护的保护

为什么我可以使用反射来实例化内部受保护的类,而不是使用包级保护的内部类?我不认为任何一种都可以在包装外进行访问.

请考虑以下示例:

package dummy;

public class ClassContainer {
   protected static class InnerProtected {
      public InnerProtected() {}
   }

   static class InnerDefault {
      public InnerDefault() {}
   }

   private class InnerPrivate {
      public InnerPrivate() {}
   }
}


package driver;

public class DriverClass {

   public static void main(String[] args) throws Exception {
      Class.forName("dummy.ClassContainer$InnerProtected").newInstance();
      Class.forName("dummy.ClassContainer$InnerDefault").newInstance();
      Class.forName("dummy.ClassContainer$InnerPrivate").newInstance();
   }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这两个类位于不同的包中.

main中的第一行(实例化InnerProtected)起作用.

第二行(实例化InnerDefault)抛出此异常:

Exception in thread "main" java.lang.IllegalAccessException: Class driver.DriverClass can not access a member of class dummy.ClassContainer$InnerDefault with modifiers "public"
Run Code Online (Sandbox Code Playgroud)

由于驱动程序是与类定义不同的包,因此实例化类的尝试不应该失败吗?

(对于它的价值:试图实例化InnerPrivate失败,如我所料:

Exception in thread "main" …
Run Code Online (Sandbox Code Playgroud)

java reflection protected

7
推荐指数
1
解决办法
796
查看次数