小编gon*_*ard的帖子

Sonar Pitest插件

我想整合一些突变测试,以确保我的junit测试的质量.我希望将结果放在我项目的声纳仪表板中.

声纳pitest插件似乎做我想做的,但也有一些问题与Maven 3,它仍然是正在开发中.

有没有人试过这个插件?还有其他选择吗?

mutation-testing maven-3 pitest sonarqube

6
推荐指数
1
解决办法
1976
查看次数

java如何从内部内部类实现对封闭类的访问?

我在内部类中创建了一个内部类:

public class EnclosingClass {

    public class InnerClass {
        private EnclosingClass getEnclosing() {
            return EnclosingClass.this;
        }

        public class InnerInnerClass {
            private InnerClass getEnclosing() {
                return InnerClass.this;
            }

            private EnclosingClass getEnclosingOfEnclosing() {
                return EnclosingClass.this;
            }
        }        
    }
}
Run Code Online (Sandbox Code Playgroud)

我很惊讶java允许InnerInnerClass直接访问EnclosingClass.这个代码是如何在Java内部实现的?

InnerInnerClass保持两个指针(一个在InnerClass和其他的EnclosingClass)或InnerInnerClass访问EnclosingClassInnerClass

java

6
推荐指数
1
解决办法
207
查看次数

Java - 安全检查网络驱动器上是否存在文件

我想测试安装的网络驱动器上是否存在文件.

我用这个简单的代码写了File.exists.

import java.io.File;

public class NetworkDrive {
    public static void main(String[] args) {
        System.err.println(new File("/Volumes/DATA/testedFile.txt").exists());
    }
}
Run Code Online (Sandbox Code Playgroud)

它大部分工作正常,但我发现这个代码有问题的边缘情况.如果驱动器已安装且由于某种原因网络连接失败,则程序会挂起很长时间(10分钟).

time java NetworkDrive
false

real    10m6.114s
user    0m0.431s
sys 0m0.949s
Run Code Online (Sandbox Code Playgroud)

即使我尝试使用KILL信号杀死它,该过程仍在运行.

1875 ttys000    0:00.00 (java)
Run Code Online (Sandbox Code Playgroud)

问题是这样的java.nio:

Files.exists(Paths.get("/Volumes/DATA/testedFile.txt"));
Run Code Online (Sandbox Code Playgroud)

我在OS X Yosemite上使用java版本1.8.0_20.

java filesystems macos

6
推荐指数
1
解决办法
1932
查看次数

使用变换后的边界进行布局

我已经在窗格中缩放了一个节点。但是,窗格的布局没有考虑任何限制就考虑了边界。我希望它考虑到转换后的边界。

例如 :

在此处输入图片说明

和代码:

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Circle;
import javafx.scene.transform.Scale;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;

public class HBoxApp extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
        public void start(Stage stage) throws Exception {
            double scale = 0.75;

            HBox box1 = createBox();
            box1.getChildren().add(new Circle(20));
            box1.getChildren().add(new Label("Test without any scale"));

            HBox box2 = createBox();
            Circle c2 = new Circle(20);
            c2.setScaleX(scale);
            c2.setScaleY(scale);
            box2.getChildren().add(c2);
            box2.getChildren().add(new Label("Test with the setScaleX/Y methods"));

            HBox …
Run Code Online (Sandbox Code Playgroud)

java javafx-2 javafx-8

5
推荐指数
1
解决办法
1060
查看次数

声纳:lambda - 在声明周围删除无用的花括号

这些代码示例:

import java.util.Observer;

public class Main {
    public static void main(String[] args) {
        Observer observer = (o, arg) -> {
            if (arg != null) {
                System.out.println(arg);
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)
import java.util.Observer;

public class Main {
    public static void main(String[] args) {
        Observer observer = (o, arg) -> {
            try {
                String test = (String) arg;
                ...
            }
            catch (ClassCastException e) {
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

不符合这个声纳规则:

只包含一个语句的Lamdbas不应该在一个块中嵌套这个语句:删除语句周围无用的花括号

我该怎么办呢?

lambda java-8 sonarqube

5
推荐指数
1
解决办法
2392
查看次数

如何对JavaFX应用程序启动进行单元测试

我有一个JavaFX应用程序,我想测试它是否启动.我该怎么做呢?是否可以使用JUnit,或者TestFX可以帮助我吗?

我的主要问题是:如何在(成功)启动后立即关闭应用程序?

示例应用程序类:

public class MovieDB extends Application {
    @Override
    public void start(final Stage primaryStage) throws IOException {
        FXMLLoader fxmlLoader = new FXMLLoader(MovieDBController.class.getResource("MovieDB.fxml"), ResourceBundle.getBundle("bundles/bundle", new Locale("en")));
        Parent root = fxmlLoader.load();

        Scene scene = new Scene(root, 1024, 768);

        StyleManager.getInstance().addUserAgentStylesheet(getClass().getResource("/css/MovieDB.css").getPath());

        primaryStage.setTitle("MovieDB");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

java unit-testing javafx javafx-8 testfx

5
推荐指数
1
解决办法
2069
查看次数

Eclipse删除静态导入

使用eclipse,我可以轻松地将静态调用转换为

import java.util.Arrays;
import java.util.List;

public class StaticImport {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("hello", "world");
        System.out.println(list);
    }
}
Run Code Online (Sandbox Code Playgroud)

到静态导入:

import static java.util.Arrays.asList;

import java.util.List;

public class StaticImport {
    public static void main(String[] args) {
        List<String> list = asList("hello", "world");
        System.out.println(list);
    }
}
Run Code Online (Sandbox Code Playgroud)

将光标放在方法名称(asList)上,然后按Ctrl-Shift-MAdd Import)。

现在,由于某些重构原因,我想删除静态导入并返回第一个代码:

List<String> list = Arrays.asList("hello", "world");
Run Code Online (Sandbox Code Playgroud)

请问有一个快捷的方法吗?

java eclipse automated-refactoring

5
推荐指数
1
解决办法
1128
查看次数

Guice协助注入了几个工厂方法和null参数

我有这个界面和简单的实现:

public interface Data {    
}

import java.nio.file.Path;
import javax.annotation.Nullable;
import javax.inject.Inject;
import com.google.inject.assistedinject.Assisted;

public class SimpleData implements Data {
    @Inject
    public SimpleData(@Assisted @Nullable Path path) {
    }
}
Run Code Online (Sandbox Code Playgroud)

我想Factory用guice 生成一个不同的方法.

import java.nio.file.Path;

import javax.annotation.Nullable;

public interface Factory {
    Data create();
    Data load(@Nullable Path path);
}
Run Code Online (Sandbox Code Playgroud)

但是以下模块配置:

import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.assistedinject.FactoryModuleBuilder;

public class Main {
    public static void main(String[] args) {
        Injector injector = Guice.createInjector(
                binder -> binder.install(
                            new FactoryModuleBuilder().implement(Data.class, SimpleData.class)
                                                      .build(Factory.class)));
        Data data = injector.getInstance(Factory.class).create(); …
Run Code Online (Sandbox Code Playgroud)

java dependency-injection guice

4
推荐指数
1
解决办法
5364
查看次数

方法参考,协方差逆变

我刚刚发现java 8允许引用具有更具体的返回类型和更一般参数的方法.

import java.util.function.Function;

public class MethodReferences {
    public static Integer function(Object o) {
        return 2;
    }

    public static void main(String[] args) {
        Function<String, Object> function = MethodReferences::function;
    }
}
Run Code Online (Sandbox Code Playgroud)

这非常灵活.

但为什么他们没有将此扩展到其他案例?

例如:

import java.util.function.Function;

public class Main {


    public static void main(String[] args) {
        Function<String, Object> function = function();
    }

    private static Function<Object, Integer> function() {
        return new Function<Object, Integer>() {

            @Override
            public Integer apply(Object o) {
                return 1;
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

编译失败:

Type mismatch: cannot …
Run Code Online (Sandbox Code Playgroud)

java java-8

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

TestFx入门

我在使用Oracle的JavaFx HelloWorld应用程序时遇到一些问题:

public class HelloWorld extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

TestFx junit测试:

class MyTest extends GuiTest {
  public Parent getRootNode() {
    return nodeUnderTest;
  }
Run Code Online (Sandbox Code Playgroud)

nodeUnderTest这个例子应该是什么?

java testing unit-testing javafx testfx

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

将向量中的每个元素与下一个进行比较

我想将向量的每个元素与下一个进行比较。我找到了以下解决方案,但它不太可读。

struct Obj {
    i: u32,
}

impl Obj {
    fn is_valid_next(&self, next: &Obj) -> bool {
        self.i + 1 == next.i
    }
}

fn main() {
    let data: Vec<Obj> = vec![Obj { i: 0 }, Obj { i: 2 }, Obj { i: 2 }];
    let mut previous: Option<Obj> = None;
    let mut is_valid = true;
    for current in data.into_iter() {
        match previous {
            Some(p) => {
                is_valid = p.is_valid_next(&current);
                if !is_valid {
                    break;
                }
            }
            None => {} …
Run Code Online (Sandbox Code Playgroud)

rust

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

名字和名字的html5模式

我有一个输入框,用户可以在其中输入名字和姓氏.我用html5模式进行验证.

但问题是当你把"西蒙"放在那时它没关系,但是如果你写"西蒙西蒙"那么它就不是了(可能问题在于两个单词之间的空间).我希望输入框允许两者

1.Username

2.名字和姓氏.

我的代码是

 <input id="login_input_username" pattern="[a-zA-Z]{2,64}" class="login_input" type="text" name="user_full_name" onfocus="this.value=''" onblur="(this.value=='')? this.value='Firstname lastname':this.value;" value="Firstname lastname" required /> 
Run Code Online (Sandbox Code Playgroud)

regex html5

0
推荐指数
1
解决办法
4961
查看次数