我的问题的答案可能非常简单和愚蠢,但到目前为止我自己还找不到。使用Play
Framework,emberjs和FluentLenium,我编写了一个非常简单的功能测试,但不能使其在 IntelliJ IDEA 13下工作*
。由于某些原因,当我使用IntelliJ运行测试时, 找不到 位于 public /和app / 文件夹中的所有 资产 。
*
这是我的代码:
import org.junit.Test;
import play.libs.F.Callback;
import play.test.TestBrowser;
import play.test.WithApplication;
import static org.fest.assertions.Assertions.assertThat;
import static play.test.Helpers.*;
public class HomePageTest extends FluentTests {
@Test
public void hello_world_test() {
running(testServer(3333, fakeApplication(inMemoryDatabase())), FIREFOX, new Callback<TestBrowser>() {
public void invoke(TestBrowser browser) {
HomePage homePage = new HomePage(browser.getDriver());
homePage.go();
homePage.isAt();
assertThat(browser.pageSource()).contains("Hello world!");
}
});
}
}
public class HomePage extends BaseFluentPage {
public HomePage(WebDriver driver) {
super(driver);
}
@Override
public String getUrl() {
return BASE_URL;
}
@Override
public void isAt() {
await().atMost(TIMEOUT).until(".ember-application").isPresent();
}
}
public abstract class BaseFluentPage extends FluentPage {
protected static final String BASE_URL = "http://localhost:3333/#/";
protected static final int TIMEOUT = 5000;
protected BaseFluentPage(WebDriver driver) {
super(driver);
}
}
这是我在IntelliJ IDEA日志中收到的错误消息:
[[36mdebug[0m] application - Unforseen error for lib/jquery/jquery.js at /public
java.lang.RuntimeException: no resource
at controllers.Assets$$anonfun$controllers$Assets$$assetInfoFromResource$1$$anonfun$10.apply(Assets.scala:214) ~[play_2.11-2.3.0.jar:na]
at controllers.Assets$$anonfun$controllers$Assets$$assetInfoFromResource$1$$anonfun$10.apply(Assets.scala:214) ~[play_2.11-2.3.0.jar:na]
at scala.Option.getOrElse(Option.scala:120) [scala-library-2.11.1.jar:na]
at controllers.Assets$$anonfun$controllers$Assets$$assetInfoFromResource$1.apply(Assets.scala:214) ~[play_2.11-2.3.0.jar:na]
at controllers.Assets$$anonfun$controllers$Assets$$assetInfoFromResource$1.apply(Assets.scala:213) ~[play_2.11-2.3.0.jar:na]
谢谢!
我的配置几乎是全新的。我使用了激活程序命令行来创建项目并生成想法配置文件。这是我当前文件夹结构的外观(我只列出运行集成测试时丢失的文件夹):
app >>
assets >>
javascripts >>
app.js
public >>
stylesheets >>
style.css
images >>
favicon.ico
使用命令行运行测试时,一切正常
activator test
由于我尚未找到解决方案,因此我提供了有关配置的更多代码和信息,因此也许有人会发现问题。
index.scala.html:
<html>
<head>
<title>Facebook-API</title>
<link rel="stylesheet" media="screen" href="@routes.Assets.at("lib/bootstrap/css/bootstrap.min.css")">
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/style.css")">
<link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
<script src="@routes.Assets.at("lib/jquery/jquery.js")" type="text/javascript"></script>
<script src="@routes.Assets.at("lib/bootstrap/js/bootstrap.min.js")"></script>
<script src="@routes.Assets.at("lib/handlebars/handlebars.js")" type="text/javascript")"></script>
<script src="@routes.Assets.at("lib/emberjs/ember.js")" type="text/javascript"></script>
<script src="@routes.Assets.at("lib/emberjs-data/ember-data.js")" type="text/javascript")"></script>
<script src="@routes.Assets.at("javascripts/app.js")" type="text/javascript")"></script>
</head>
<body>
@ember_content
</body>
</html>
plugins.sbt:
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.2")
// web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-web" % "1.0.2")
build.sbt:
name := """facebook-api"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava, SbtWeb)
scalaVersion := "2.11.1"
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
javaWs,
"org.webjars" % "bootstrap" % "3.2.0",
"org.webjars" % "jquery" % "2.1.1",
"org.webjars" % "handlebars" % "1.3.0",
"org.webjars" % "emberjs" % "1.5.0",
"org.webjars" % "emberjs-data" % "1.0.0-beta.8"
)
我再次更新了帖子以反映我当前的项目结构和代码(请参见上文)。我修改了代码以使用WebJars而不是手动下载的js库,按照迁移到Play
2.3.X的步骤,更新为最新的Play版本,并按照步骤在Play文档中指定的IntelliJ中正确导入SBT&Play项目。现在,当我从IntelliJ运行测试时,我仍然遇到相同的错误,但是,我可以看到在target
/中生成了一个web /文件夹,其中包含一个文件夹test
/,其中包含我项目中具有正确文件夹结构的所有资产。我将此文件夹添加为IntelliJ中的Resource / Test
Resource文件夹,但仍然没有成功。我还添加了具有相同结果的公用文件夹。
我真的觉得我正在接近解决方案。实际上,我尝试了很多事情,发现如果删除sbt-
rjs插件(RequireJS),则dev中的运行代码(激活器运行)会崩溃,并出现相同的错误。我还没有为我的JS文件设置RequireJS(添加main.js文件),并且直到我真正需要它之前都不想这样做,除非它可以解决我的问题。有什么想法吗?
最后,这是解决此问题的方法。
我将此行添加到我的build.sbt文件中:
对于SBT 0.x:
unmanagedResourceDirectories in Test <+= baseDirectory ( _ /"target/web/public/test" )
对于SBT 1.x:
unmanagedResourceDirectories in Test += baseDirectory ( _ /"target/web/public/test" ).value
感谢@MarkVedder和@JarmoPertman的出色评论,这些评论使我对这个解决方案感到满意!
我目前正在开发一个使用libgdx和java的游戏。我想在我的游戏的一些功能上运行一些JUnit测试,但是我在加载我的资产时遇到了困难。我试图实现Mockito,这样我就可以进行无头JUnit测试,看看这是否有助于解决问题,但这并没有帮助。这里是我试图加载资产的测试类(资产正在第17行加载) 以下是我尝试运行的每个测试的错误消息: 搜索到的文件肯定位于指定的位置,我还将资产文件夹设置为该模块的资源
主要内容:功能测试的目标功能测试是软件测试的一个分支,旨在验证软件应用程序的功能,而不管功能是否根据需求规范运行。通过给出适当的输入值,确定输出并使用预期输出验证实际输出来测试每个功能。 功能测试包括通过GUI(图形用户界面),API(应用程序接口),安全性,数据库,客户端应用程序,服务器应用程序和应用程序功能进行测试。黑盒测试方法用于功能测试,其中测试内部逻辑的工作而不窥视内部代码。 功能测试的目标 功能测试的目标是检
功能测试从用户的角度验证场景。它类似于验收测试。 但是它不是通过 HTTP 进行通信,而是填充环境,如(填充)POST 和 GET 参数, 然后直接在代码里执行 Application 实例。 功能测试通常比验收测试快,并且在失败时提供详细的堆栈跟踪。 根据老司机的经验,功能测试应该是首选的,除非有专门的 Web 服务器设置 或者由 JavaScript 构建的复杂 UI。 功能测试是借助于具有良
主要内容:为什么进行非功能性测试,在非功能测试下测试的参数,非功能测试的优点,非功能测试的缺点非功能测试是一种软件测试,用于测试非功能性参数,例如:软件的可靠性,负载测试,性能和责任。非功能测试的主要目的是根据非功能参数测试软件系统的读取速度。在功能测试之前,从未测试过非功能测试的参数。 非功能性测试作为功能测试也非常重要,因为它在客户满意度中起着至关重要的作用。 例如,非功能性测试将测试有多少人可以同时在任何软件上工作。 为什么进行非功能性测试 功能和非功能测试对于新开发的软件都是强制性
自动化测试平台 SWATHub 是 DaoCloud 的合作伙伴,他们为各类互联网应用提供了自动化测试的服务。我们推荐 DaoCloud 用户在完成持续集成单元测试等环节后,把应用部署在测试集群之上,运行自动化测试,进一步检验软件质量。以下内容由 SWATHub 提供。 SWATHub 是云端的自动化测试 SaaS 平台。通过创新的非编码的流程搭建和执行方式,SWATHub 能够帮助团队简单、高效