小编JSB*_*ach的帖子

如何对具有数据库访问权限的方法进行单元测试?

我在单元测试上已经遇到了一些困难,我正在尝试使用我目前正在开发的一个小项目来学习它,我遇到了这个问题,这两个问题我希望你能帮助我

1-我的项目是一个MVC项目。我的单元测试应该从哪个级别开始?他们应该只关注业务层吗?他们还应该测试我的控制器上的操作吗?

2-我有一种方法可以验证用户名格式,然后访问数据库以检查它是否可供使用。返回一个布尔值,无论该用户名是否可用。人们会为这种方法创建一个单元测试吗?我对测试格式验证感兴趣,但是如何在不查询数据库的情况下检查它们?另外,如果格式正确,但用户名已在使用中,我将得到一个错误值,但验证有效。我可以解耦这个方法,但是只有在格式正确的情况下才应该进行数据库验证,因此它们应该以某种方式绑定在一起。具有单元测试知识的人将如何解决这个问题。或者有人会如何重构这个方法来测试它?我可以为数据库访问创建一个存根,但是如何在用户测试时将其附加到我的项目,但在本地运行时将其分离?

谢谢!

unit-testing

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

如何在导入项目时将Eclipse识别为"代码文件夹"?

我有一个Maven Java项目,我在其中添加了pom:

<build>
....
    <plugin>
                <!-- adding second test source directory (just for integration tests) -->
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>${plugin.build-helper-maven-plugin.version}</version>
                <executions>
                    <execution>
                        <id>add-integration-test-source</id>
                        <phase>generate-test-sources</phase>
                        <goals>
                            <goal>add-test-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>src/integration-test/java</source>
                            </sources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>add-integration-test-resource</id>
                        <phase>generate-test-resources</phase>
                        <goals>
                            <goal>add-test-resource</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>src/integration-test/resources</directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
</build>
Run Code Online (Sandbox Code Playgroud)

InteliJ将我在兼容测试下的java和资源文件夹识别为代码文件夹,但Eclipse没有.有没有办法在导入项目时将这些文件夹添加为代码文件夹?

java eclipse maven

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

WP7检查互联网是否可用

我的应用程序WP7未被接受,因为如果互联网不可用,则无法加载.我找了一种检查它的方法并找到了这个命令

NetworkInterface.GetIsNetworkAvailable()

但它不适用于模拟器,我没有任何设备来测试它.如果设备处于飞行模式,有人可以告诉我它是否返回false?如果没有,我该如何检查?

谢谢,奥斯卡

编辑:我也尝试过这段代码:

try
{
    wsClient.CurrenciesCompleted += new EventHandler<CurrencyConversion.CurrenciesCompletedEventArgs>(wsClient_CurrenciesCompleted);
    wsClient.CurrenciesAsync(null);
}
catch
{
     NetworkNotAvailable();
}
Run Code Online (Sandbox Code Playgroud)

但是我无法捕捉异常,我也尝试过wsClient_CurrenciesCompleted方法,但也没有好处.

我在哪里可以测试它?

silverlight windows-phone-7

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

有没有办法覆盖MVC控制器动作?

我正在调整一个开源项目(NopCommerce).它是一款出色的软件,支持使用插件进行扩展.对于一个插件,我想向视图添加信息,为此,我想从Controller继承并覆盖我需要更改的操作.所以这是我的控制器:

public class MyController : OldController{
//stuff

public new ActionResult Product(int productId)
{
 //Somestuff
}

}
Run Code Online (Sandbox Code Playgroud)

我从我的插件更改了路由,但是当调用此操作时,我收到以下错误:

控制器类型'MyController'上的当前操作'Product'请求在以下操作方法之间是不明确的:System.Web.Mvc.ActionResult类型MyPlugin上的产品(Int32)System.Web.Mvc.ActionResult类型OldController上的产品(Int32)

有什么办法可以覆盖这个方法吗?(ps:我不能使用override关键字,因为它在OldController中没有标记为虚拟,抽象或覆盖)

谢谢,奥斯卡

c# asp.net nopcommerce asp.net-mvc-4

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

Cruise Control&Git:"源控制操作已经超时." 错误

我正在尝试创建一个新的巡航控制项目.为此,我将其添加到我的ccnet.config文件中

<project name="MyProj"
         description="MyProjproject">

  <triggers/>

  <sourcecontrol type="git">
    <repository>GitAddr</repository>
    <branch>releaseName</branch>
    <autoGetSource>true</autoGetSource>
    <fetchSubmodules>true</fetchSubmodules>
    <executable>C:\Program Files (x86)\Git\cmd\git.exe</executable>
    <tagOnSuccess>false</tagOnSuccess>
    <commitBuildModifications>false</commitBuildModifications>
    <commitUntrackedFiles>false</commitUntrackedFiles>
    <tagCommitMessage>Unation Web Build {0}</tagCommitMessage>
    <tagNameFormat>Unation-Web-Build-{0}</tagNameFormat>
    <committerName>Oscar Albrecht</committerName>
    <committerEMail>oalbrecht@unation.com</committerEMail>
    <workingDirectory>d:\GIT\Sources\WEB</workingDirectory>
    <timeout>60000</timeout>
  </sourcecontrol>

  <tasks>
      <exec>
        <!-- if you want the task to fail, ping an unknown server -->
        <executable>ping.exe</executable>
        <buildArgs>localhost</buildArgs>
        <buildTimeoutSeconds>15</buildTimeoutSeconds>
        <description>Pinging a server</description>
      </exec>
  </tasks>

  <publishers>
    <xmllogger />
    <artifactcleanup cleanUpMethod="KeepLastXBuilds"
                     cleanUpValue="50" />
  </publishers>

</project>
Run Code Online (Sandbox Code Playgroud)

但我得到了一个

ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation has timed out.
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GitFetch(IIntegrationResult result)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.CreateUpateLocalRepository(IIntegrationResult result)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GetModifications(IIntegrationResult from, …
Run Code Online (Sandbox Code Playgroud)

git cruisecontrol.net

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

如何使用Chartkick在Rails中混合列和折线图?

我想在我的rails应用程序中显示图表.作为Chartkick,我能够找到许多可以做到这一点的项目.不过,我想有一个像图这一个,在那里我最大行和列.有没有能够绘制这种图形的项目?我无法在chartkick的网站或Google上找到任何内容.

ruby-on-rails chartkick

5
推荐指数
2
解决办法
2937
查看次数

如何检测 MySQL 中的死锁?什么可能导致我的应用程序在建立连接时挂起?

我有一个应用程序存在一些数据库问题:当它尝试打开与数据库的连接(或执行查询,这不清楚)时,它突然冻结。没有错误信息。我怀疑有一些查询阻止了其他查询,我想弄清楚那是什么。我用了

SET profiling=1;
Run Code Online (Sandbox Code Playgroud)

但是当我执行时:

show profiles;
Run Code Online (Sandbox Code Playgroud)

我只得到我自己执行的查询,而不是应用程序查询(应用程序和我使用的是同一个用户)。

打电话

 SHOW FULL PROCESSLIST;
Run Code Online (Sandbox Code Playgroud)

返回包含所有进程的表。

+-----+----------+---------------------+--------+---------+------+-------+-----------------------+
| Id  | User     | Host                | db     | Command | Time | State | Info                  |
+-----+----------+---------------------+--------+---------+------+-------+-----------------------+
|   8 | user     | <HOST>              | DBs    | Sleep   |    3 |       | NULL                  |
| 722 | user     | <HOST>              | DBs    | Sleep   | 8205 |       | NULL                  |
| 726 | user     | <HOST>              | DBs    | Sleep   | 8212 |       | NULL                  |
| …
Run Code Online (Sandbox Code Playgroud)

mysql locking

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

当我的项目中没有任何实体时,如何将原生查询映射到POJO?

我正在将ETL过程从工具转换为Java批处理API应用程序.在这个ETL过程中.在当前版本(使用该工具)中,我们有许多连接不同表的SQL语句,以便生成所需的输出.现在可以转换为Java,JPA.

我想使用本机查询.这样会很好,因为它不需要为查询中使用的每个表创建实体,我可以使用POJO来查询结果(我也不需要重写查询).阅读这个答案,我知道我可以使用@SqlResultSetMapping.问题是我的项目中没有任何实体,所以我不知道在哪里放这个注释.我可以在任何地方放置这个注释,以便实体经理找到它吗?

PS:在我的概念证明中,我目前正手动从一组对象转换为POJO,但我真的不喜欢这种方法.

@Entity注释添加到POJO将导致我的应用程序无法启动:

引起:org.hibernate.HibernateException:缺少表:MyTable

我不确定(现在正在搜索它),但我认为它可能是由我的persistence.xml中的这个属性引起的

<property name="hibernate.hbm2ddl.auto" value="validate"/>
Run Code Online (Sandbox Code Playgroud)

java mysql hibernate jpa

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

在提交TFS之前强制进行代码分析

在将其提交给TFS之前,我想强制我的所有团队成员对他们的C#源代码执行代码分析.在此分析中,我希望具有代码质量(样式和可能的错误).

我找到了CodeRush,ReSharper,但它们非常昂贵.我也发现了FXCop,但它只适用于DLL和EXE文件.我喜欢StyleCop,但我找不到将它集成到TFS的方法,并且警告消息中没有"严重性".

你知道有这种功能的工具吗?

谢谢!

c# tfs static-analysis visual-studio

3
推荐指数
1
解决办法
1192
查看次数

当我使用build命令时,Docker compose忽略了我的Dockerfile

我有这个文件夹结构:

/ home/me/composetest/home/me/composetest/mywildflyimage

在复合内部我有这个docker-compose.yml:

web:
    image: test/mywildfly
    container_name: wildfly
    ports:
        - "8080:8080"
        - "9990:9990"
Run Code Online (Sandbox Code Playgroud)

在mywildflyimage里面我有这个docker图像:

FROM jboss/wildfly

EXPOSE 8080 9990

ADD standalone.xml /opt/jboss/wildfly/standalone/configuration/

RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent 
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)

如果我跑

docker built -t test/mywildfly .
docker-compose up
Run Code Online (Sandbox Code Playgroud)

一切都很好,管理部分注意到0.0.0.0(CMD命令的管理0.0.0.0部分).

如果我更改了docker-compose.yml:

web:
        build: mywildflyimage
        container_name: wildfly
        ports:
            - "8080:8080"
            - "9990:9990"
Run Code Online (Sandbox Code Playgroud)

并运行docker-compose up

它仍然会启动,但管理部分不再绑定到0.0.0.0(这是我继承的图像的默认行为).

当我build在docker-compose.ml中使用命令时,为什么它会停止工作?

编辑:它似乎忽略了我所有的docker文件命令.

docker docker-compose

3
推荐指数
1
解决办法
1868
查看次数