小编Bio*_*eek的帖子

使用PowerMockito模拟单例

为了测试我编码的私有方法之一,我需要模拟一个Singleton.

在使用PowerMockito测试了几种方法之后:

PowerMockito.mockStatic(UtilDatabaseSoldeAutoCdeCommon.class);
Mockito.when(UtilDatabaseSoldeAutoCdeCommon.getInstance()).thenReturn(mockDatabase);
Run Code Online (Sandbox Code Playgroud)

我永远不会嘲笑这门课.因此,我不能像在每个方法中那样测试我的方法,我访问数据库.

UtilDatabaseSoldeAutoCdeCommon定义如下:

public class UtilDatabaseSoldeAutoCdeCommon extends AbstractUtilDatabase {

private static UtilDatabaseSoldeAutoCdeCommon instance;

private UtilDatabaseSoldeAutoCdeCommon() {
    super();
}

public static UtilDatabaseSoldeAutoCdeCommon getInstance() {
    if(instance == null) {
        instance = new UtilDatabaseSoldeAutoCdeCommon();
    }
    return instance;
}

...
}
Run Code Online (Sandbox Code Playgroud)

我在调用getInstance()时调试了powermockito,但每次调用consructor时,它都会在尝试加载配置文件(不存在)时崩溃.

我确切地说,配置文件被定义为UtilDatabaseEnrichissement的absract父类中的常量,并在构造函数中使用.

我怎么测试这部分?

java testing junit4 mockito powermock

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

目标org.codehaus.mojo的参数'group':rpm -maven-plugin:2.1.5:rpm丢失或无效

跑步时

mvn clean rpm:rpm 
Run Code Online (Sandbox Code Playgroud)

我收到此错误:目标org.codehaus.mojo的参数'group':rpm -maven-plugin:2.1.5:rpm丢失或无效

我的父pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.brewspberry</groupId>
<artifactId>brewspberry-rpm-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
<name>brewspberry-rpm-parent</name>
<description>brewspberry-rpm-parent</description>
<packaging>pom</packaging>

<properties>
    <rpm.install.basedir>/opt/tomcat</rpm.install.basedir>
    <rpm.install.webapps>${rpm.install.basedir}/webapps</rpm.install.webapps>
    <rpm.install.config>${rpm.install.basedir}/lib</rpm.install.config>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.group>Internet</project.build.group>
</properties>

<modules>
    <module>brewspberry-regulator-algo</module>
    <module>brewspberry-api</module>
    <module>brewspberry-core</module>
    <module>brewspberry-jbatches</module>
    <module>brewspberry-webapp</module>
</modules>
<profiles>
    <profile>
        <id>rpm-build</id>
        <activation>
            <property>
                <name>build-rpm</name>
            </property>
        </activation>

        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>rpm-maven-plugin</artifactId>
                    <version>2.1</version>
                    <extensions>true</extensions>

                    <executions>
                        <execution>
                            <goals>
                                <goal>rpm</goal>
                            </goals>
                            <configuration>
                                <classifier>${rpm.classifier}</classifier>
                                <copyright>Biologeek</copyright>
                                <icon>src/main/resources/img/icon.png</icon>
                                <distribution>Brewspberry</distribution>
                                <targetOS>linux</targetOS>
                                <needarch>noarch</needarch>
                                <group>Internet</group>
                                <packager>${user.name}</packager>
                                <changelogFile>CHANGELOG</changelogFile>
                                <defaultDirmode>540</defaultDirmode>
                                <defaultFilemode>440</defaultFilemode>
                                <defaultUsername>tomcat</defaultUsername>
                                <defaultGroupname>tomcat</defaultGroupname>

                                <properties>
                                    <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
                                    <project.build.group>net.brewspberry</project.build.group>
                                </properties>

                                <requires>
                                    <require>apache-tomcat &gt;= 8.0.24</require>
                                </requires>
                                <mappings>
                                    <mapping>
                                        <directory>${rpm.install.webapps}/brewspberry-api</directory>
                                        <sources> …
Run Code Online (Sandbox Code Playgroud)

java pom.xml maven

6
推荐指数
2
解决办法
5620
查看次数

Angular 5默认值未默认选中

使用ngFor循环创建选项时,未选择ngModel的默认值

HTML:

<form style="margin : 20%;">
    <div class="row">
        <div class="form-group">
            <label for="foo">K1 :{{keyboard | json}}</label>
            <select [(ngModel)]="keyboard" name="foo" class="custom-select"> 
                <option *ngFor="let a of foo" [ngValue]="a">{{a.name}}</option> 
            </select>
        </div>
    </div>
    <div class="row">


        <div class="form-group">
            <label for="fooz">K2 :{{keyboard2 | json}}</label>
            <select [(ngModel)]="keyboard2" name="fooz" class="custom-select"> 
                <option [ngValue]="foo[0]">AZERTY</option> 
                <option [ngValue]="foo[1]">QWERTY</option> 
            </select>
        </div>
    </div>
    <div class="row">


        <div class="form-group">
            <label for="fooa">K2 :{{keyboardStr | json}}</label>
            <select [(ngModel)]="keyboardStr" name="fooa" class="custom-select"> 
                <option [selected]="keyboardStr == 'AZERTY'" [ngValue]="AZERTY">AZERTY</option> 
                <option [selected]="keyboardStr == 'QWERTY'" [ngValue]="QWERTY">QWERTY</option> 
            </select>
        </div>
    </div>
    <div class="row">

        <div class="form-group">
            <label for="fooa">K2-bis …
Run Code Online (Sandbox Code Playgroud)

html javascript typescript angular

6
推荐指数
2
解决办法
8078
查看次数

使用 Keycloak SSO 在 2 个应用程序之间保持身份验证

我有 2 个 JHipster 应用程序,每个应用程序都在一个子域(app1.domain.tld 和 app2.domain.tld)上运行。

在这两个应用程序中,用户都通过 Keycloak 登录。顺序如下:

  1. Angular 应用程序将带有凭据的 /authenticate 请求发送到 Keycloak
  2. 如果响应成功,则返回身份验证 cookie
  3. POST 请求被发送到生成 JSessionID cookie 的 Jhipster 后端应用程序
  4. 然后,JSessionID 用于对支持的应用程序的每个请求。

如果用户已经登录域(*.domain.tld)的应用程序之一,自动登录用户(无需询问用户名和密码)的最佳方式是什么?

在了解 JSessionID 仅适用于生成它的应用程序之前,我尝试使用 JSessionID 作为全局令牌...

也许捕获 Keycloak 身份验证 cookie(在步骤 2 中返回)并在第二个应用程序上进行身份验证就可以解决问题?

从我在测试时看到的情况来看,在第一个应用程序上进行身份验证后,当我转到第二个应用程序时,Angular 401 HTTP 拦截器会使用会话令牌重定向到 keycloak 登录页面。因此,那时 Keycloak 应该看到我已经登录,并且应该将我重定向到我的第二个应用程序的主页。

我对吗 ?

java spring-security single-sign-on jhipster keycloak

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